diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp
index 6cd29d7be45cdaafcde78da9fb7bde4ee8909a90..edf093261c959bce3ebf1793fb1586b9a19e1dcb 100644
--- a/indra/newview/llreflectionmapmanager.cpp
+++ b/indra/newview/llreflectionmapmanager.cpp
@@ -124,26 +124,6 @@ void LLReflectionMapManager::update()
 
     initReflectionMaps();
 
-    if (!mRenderTarget.isComplete())
-    {
-        U32 color_fmt = GL_RGB16F;
-        U32 targetRes = mProbeResolution * 4; // super sample
-        mRenderTarget.allocate(targetRes, targetRes, color_fmt, true);
-    }
-
-    if (mMipChain.empty())
-    {
-        U32 res = mProbeResolution;
-        U32 count = log2((F32)res) + 0.5f;
-        
-        mMipChain.resize(count);
-        for (int i = 0; i < count; ++i)
-        {
-            mMipChain[i].allocate(res, res, GL_RGB16F);
-            res /= 2;
-        }
-    }
-
     llassert(mProbes[0] == mDefaultProbe);
     
     LLVector4a camera_pos;
@@ -1267,6 +1247,28 @@ void LLReflectionMapManager::initReflectionMaps()
         mDefaultProbe->mProbeIndex = 0;
         touch_default_probe(mDefaultProbe);
 
+        mRenderTarget.release();
+        mMipChain.clear();
+    }
+
+    if (!mRenderTarget.isComplete())
+    {
+        U32 color_fmt = GL_RGB16F;
+        U32 targetRes = mProbeResolution * 4; // super sample
+        mRenderTarget.allocate(targetRes, targetRes, color_fmt, true);
+    }
+
+    if (mMipChain.empty())
+    {
+        U32 res = mProbeResolution;
+        U32 count = log2((F32)res) + 0.5f;
+
+        mMipChain.resize(count);
+        for (int i = 0; i < count; ++i)
+        {
+            mMipChain[i].allocate(res, res, GL_RGB16F);
+            res /= 2;
+        }
     }
 
     if (mVertexBuffer.isNull())
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 77678538ee0f5d389b560aadff3fc802824bb8be..0a3b397b4f0b1771c6f13b9aacd5f0f963feb956 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -754,6 +754,7 @@ void settings_setup_listeners()
 // [/SL:KB]
     setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeLevel", handleReflectionProbeDetailChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeDetail", handleReflectionProbeDetailChanged);
+    setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeResolution", handleReflectionProbeDetailChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderReflectionsEnabled", handleReflectionProbeDetailChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderScreenSpaceReflections", handleReflectionProbeDetailChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderShaderCacheEnabled", handleSetShaderChanged);