diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp
index 43d0b5d6e5f84ec12554668307e5938baa74a688..962552d19fa1dd19143ea6ea1bb083e19d1f1b24 100644
--- a/indra/newview/lldrawpoolbump.cpp
+++ b/indra/newview/lldrawpoolbump.cpp
@@ -1171,7 +1171,7 @@ void LLBumpImageList::generateNormalMapFromAlpha(LLImageRaw* src, LLImageRaw* nr
 
 	S32 src_cmp = src->getComponents();
 
-	F32 norm_scale = gSavedSettings.getF32("RenderNormalMapScale");
+	F32 norm_scale = LLPipeline::RenderNormalMapScale;
 
 	U32 idx = 0;
 	//generate normal map from pseudo-heightfield
@@ -1405,7 +1405,7 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI
 					static LLStaticHashedString sStepX("stepX");
 					static LLStaticHashedString sStepY("stepY");
 
-					gNormalMapGenProgram.uniform1f(sNormScale, gSavedSettings.getF32("RenderNormalMapScale"));
+					gNormalMapGenProgram.uniform1f(sNormScale, LLPipeline::RenderNormalMapScale);
 					gNormalMapGenProgram.uniform1f(sStepX, 1.f/bump->getWidth());
 					gNormalMapGenProgram.uniform1f(sStepY, 1.f/bump->getHeight());
 
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index dba41c503b5e8d0fd55a7d6340f42bc18d9de800..8688802df57e0299c278e1756cc20974da8cfc67 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -214,6 +214,7 @@ bool LLPipeline::CameraOffset;
 F32 LLPipeline::CameraMaxCoF;
 F32 LLPipeline::CameraDoFResScale;
 F32 LLPipeline::RenderAutoHideSurfaceAreaLimit;
+F32 LLPipeline::RenderNormalMapScale;
 LLTrace::EventStatHandle<S64> LLPipeline::sStatBatchSize("renderbatchsize");
 
 const F32 BACKLIGHT_DAY_MAGNITUDE_OBJECT = 0.1f;
@@ -618,7 +619,7 @@ void LLPipeline::init()
 	connectRefreshCachedSettingsSafe("CameraMaxCoF");
 	connectRefreshCachedSettingsSafe("CameraDoFResScale");
 	connectRefreshCachedSettingsSafe("RenderAutoHideSurfaceAreaLimit");
-	gSavedSettings.getControl("RenderAutoHideSurfaceAreaLimit")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	connectRefreshCachedSettingsSafe("RenderNormalMapScale");
 }
 
 LLPipeline::~LLPipeline()
@@ -1194,6 +1195,7 @@ void LLPipeline::refreshCachedSettings()
 	CameraMaxCoF = gSavedSettings.getF32("CameraMaxCoF");
 	CameraDoFResScale = gSavedSettings.getF32("CameraDoFResScale");
 	RenderAutoHideSurfaceAreaLimit = gSavedSettings.getF32("RenderAutoHideSurfaceAreaLimit");
+	RenderNormalMapScale = gSavedSettings.getF32("RenderNormalMapScale");
 	RenderSpotLight = nullptr;
 	updateRenderDeferred();
 }
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index ace36b5d97f7d09219eac2f6ba2d84d86f9cbe19..a6570b1437ab09076bbf47ae4ff24815d92dd6cb 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -960,6 +960,7 @@ class LLPipeline
 	static F32 CameraMaxCoF;
 	static F32 CameraDoFResScale;
 	static F32 RenderAutoHideSurfaceAreaLimit;
+	static F32 RenderNormalMapScale;
 };
 
 void render_bbox(const LLVector3 &min, const LLVector3 &max);