diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 5c1554d4bb84dfee97e5c54177dfb09039fae8f2..12739856b820d672e6c49065ecab9400d3adf22a 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -487,8 +487,14 @@ static bool handleRenderDebugPipelineChanged(const LLSD& newvalue)
 	return true;
 }
 
-static bool handleRenderResolutionDivisorChanged(const LLSD&)
+static bool validateRenderResolutionDivisor(const LLSD& newvalue)
 {
+	return (newvalue.asReal() > 0.01f);
+}
+
+static bool handleRenderResolutionDivisorChanged(const LLSD& newvalue)
+{
+	LLPipeline::RenderResolutionMultiplier = llmin((F32)newvalue.asReal(), 0.01f);
 	gResizeScreenTexture = TRUE;
 	return true;
 }
@@ -692,6 +698,7 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("RenderDeferredNoise")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
 	gSavedSettings.getControl("RenderDebugGL")->getSignal()->connect(boost::bind(&handleRenderDebugGLChanged, _2));
 	gSavedSettings.getControl("RenderDebugPipeline")->getSignal()->connect(boost::bind(&handleRenderDebugPipelineChanged, _2));
+	gSavedSettings.getControl("RenderResolutionDivisor")->getValidateSignal()->connect(boost::bind(&validateRenderResolutionDivisor, _2));
 	gSavedSettings.getControl("RenderResolutionDivisor")->getSignal()->connect(boost::bind(&handleRenderResolutionDivisorChanged, _2));
 // [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4
 	gSavedSettings.getControl("RenderResolutionMultiplier")->getSignal()->connect(boost::bind(&handleRenderResolutionDivisorChanged, _2));