diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp
index 6ce141ad373fed8075787b2b4ea75914c23242d1..375f8a65e16a7a9758a1fa4ca8717ef8e294f620 100644
--- a/indra/llinventory/llsettingssky.cpp
+++ b/indra/llinventory/llsettingssky.cpp
@@ -1472,7 +1472,10 @@ F32 LLSettingsSky::getTotalReflectionProbeAmbiance(F32 cloud_shadow_scale) const
     // without brightening dark/interior spaces
     F32 probe_ambiance = getReflectionProbeAmbiance();
 
-    probe_ambiance += (1.f - probe_ambiance) * getCloudShadow()*cloud_shadow_scale;
+    if (probe_ambiance > 0.f)
+    {
+        probe_ambiance += (1.f - probe_ambiance) * getCloudShadow() * cloud_shadow_scale;
+    }
 
     return probe_ambiance;
 }
diff --git a/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl b/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl
index a3b48e08980691fbc6ee86a931e6661b0d79241e..3cca84ca146050d2bc357b55c7e1d78bf3bb7d3a 100644
--- a/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/srgbF.glsl
@@ -93,16 +93,11 @@ vec3 legacy_adjust_no_brighten(vec3 c)
 
 vec3 legacy_adjust(vec3 c)
 {
-#if 1
     vec3 desat = rgb2hsv(c.rgb);
     desat.g *= 1.0-(1.0-desat.b)*0.5;
-    //desat.g = max(desat.g-0.1*c.b-0.1, 0.0);
     desat.b += (1.0-desat.b)*0.1f;
     desat.rgb = hsv2rgb(desat);
     return desat;
-#else
-    return c;
-#endif
 }
 
 vec3 legacy_adjust_post(vec3 c)
diff --git a/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl
index 62bb09e94b73c983302104822158a29da311159a..e5341386bd422e46dd19562869b83fecf6bdc6ea 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/materialF.glsl
@@ -411,7 +411,8 @@ void main()
         applyLegacyEnv(color, legacyenv, spec, pos.xyz, norm.xyz, env);
 
         float cur_glare = max(max(legacyenv.r, legacyenv.g), legacyenv.b);
-        cur_glare *= env*4.0;
+        cur_glare = clamp(cur_glare, 0, 1);
+        cur_glare *= env;
         glare += cur_glare;
     }
 
diff --git a/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl
index e1b18935e80e7ef0dc7630334aa70a71bb511d37..55a43f76d0f5b6b7b701d6a3ace12c7e160bdf69 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl
@@ -752,6 +752,8 @@ void sampleReflectionProbesLegacy(inout vec3 ambenv, inout vec3 glossenv, inout
         legacyenv = mix(legacyenv, ssr.rgb, w);
     }
 #endif
+
+    glossenv = clamp(glossenv, vec3(0), vec3(10));
 }
 
 void applyGlossEnv(inout vec3 color, vec3 glossenv, vec4 spec, vec3 pos, vec3 norm)
diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp
index a9da887220348754e1c5b2c04e57c2ec5ea000bc..e8f70cd576d469555be7a2674013748d42fd298a 100644
--- a/indra/newview/lldrawpoolwlsky.cpp
+++ b/indra/newview/lldrawpoolwlsky.cpp
@@ -264,6 +264,11 @@ void LLDrawPoolWLSky::renderSkyCloudsDeferred(const LLVector3& camPosLocal, F32
         F32 cloud_variance = psky ? psky->getCloudVariance() : 0.0f;
         F32 blend_factor   = psky ? psky->getBlendFactor() : 0.0f;
 
+        if (psky->getCloudScrollRate().isExactlyZero())
+        {
+            blend_factor = 0.f;
+        }
+
         // if we even have sun disc textures to work with...
         if (cloud_noise || cloud_noise_next)
         {
diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp
index 3a5695e113c06eb9773825b65c702eaea75b9302..03a0b741b9a6b7f92f683bf79659b7d8bf94ceb7 100644
--- a/indra/newview/llenvironment.cpp
+++ b/indra/newview/llenvironment.cpp
@@ -815,7 +815,7 @@ const F64Seconds LLEnvironment::TRANSITION_SLOW(10.0f);
 const F64Seconds LLEnvironment::TRANSITION_ALTITUDE(5.0f);
 
 const LLUUID LLEnvironment::KNOWN_SKY_SUNRISE("01e41537-ff51-2f1f-8ef7-17e4df760bfb");
-const LLUUID LLEnvironment::KNOWN_SKY_MIDDAY("d0401f82-56b9-f3ef-c6aa-13b589f7fdad");
+const LLUUID LLEnvironment::KNOWN_SKY_MIDDAY("bd2e6d30-6e16-3253-e3e6-549e30b536ca");
 const LLUUID LLEnvironment::KNOWN_SKY_LEGACY_MIDDAY("6c83e853-e7f8-cad7-8ee6-5f31c453721c");
 const LLUUID LLEnvironment::KNOWN_SKY_SUNSET("084e26cd-a900-28e8-08d0-64a9de5c15e2");
 const LLUUID LLEnvironment::KNOWN_SKY_MIDNIGHT("8a01b97a-cb20-c1ea-ac63-f7ea84ad0090");
@@ -1649,8 +1649,16 @@ void LLEnvironment::updateCloudScroll()
     
     if (mCurrentEnvironment->getSky() && !mCloudScrollPaused)
     {
-        LLVector2 cloud_delta = static_cast<F32>(delta_t)* (mCurrentEnvironment->getSky()->getCloudScrollRate()) / 100.0;
-        mCloudScrollDelta += cloud_delta;
+        LLVector2 rate = mCurrentEnvironment->getSky()->getCloudScrollRate();
+        if (rate.isExactlyZero())
+        {
+            mCloudScrollDelta.setZero();
+        }
+        else
+        {
+            LLVector2 cloud_delta = static_cast<F32>(delta_t) * (mCurrentEnvironment->getSky()->getCloudScrollRate()) / 100.0;
+            mCloudScrollDelta += cloud_delta;
+        }
     }
 
 }
diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp
index 0e3491a204088541e6615e71136a073fa0eb717f..c00679c05c814bd23380a45b14d5a44ffead3c6a 100644
--- a/indra/newview/llsettingsvo.cpp
+++ b/indra/newview/llsettingsvo.cpp
@@ -726,8 +726,20 @@ void LLSettingsVOSky::applySpecial(void *ptarget, bool force)
     }
     else
     {
-        shader->uniform3fv(LLShaderMgr::AMBIENT_LINEAR, linearColor3v(getAmbientColor() / 3.f)); // note magic number 3.f comes from SLIDER_SCALE_SUN_AMBIENT
-        shader->uniform3fv(LLShaderMgr::AMBIENT, LLVector3(ambient.mV));
+        if (psky->getReflectionProbeAmbiance() == 0.f)
+        {
+            LLVector3 ambcol(ambient.mV);
+            F32 cloud_shadow = psky->getCloudShadow();
+            LLVector3 tmpAmbient = ambcol + ((LLVector3::all_one - ambcol) * cloud_shadow * 0.5f);
+
+            shader->uniform3fv(LLShaderMgr::AMBIENT_LINEAR, linearColor3v(tmpAmbient));
+            shader->uniform3fv(LLShaderMgr::AMBIENT, tmpAmbient.mV);
+        }
+        else
+        {
+            shader->uniform3fv(LLShaderMgr::AMBIENT_LINEAR, linearColor3v(getAmbientColor() / 3.f)); // note magic number 3.f comes from SLIDER_SCALE_SUN_AMBIENT
+            shader->uniform3fv(LLShaderMgr::AMBIENT, LLVector3(ambient.mV));
+        }
     }
 
     shader->uniform3fv(LLShaderMgr::BLUE_HORIZON_LINEAR, linearColor3v(getBlueHorizon() / 2.f)); // note magic number of 2.f comes from SLIDER_SCALE_BLUE_HORIZON_DENSITY
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 73a06714d118e01c8853bebee0b0f5458c3cecb5..b927dd8e4b5942156c30c3c2434ae2eac7156d4c 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -9290,6 +9290,9 @@ class LLWorldEnvSettings : public view_listener_t
 		}
         else if (event_name == "region")
 		{
+            // reset probe data when reverting back to region sky setting
+            gPipeline.mReflectionMapManager.reset();
+
             LLEnvironment::instance().clearEnvironment(LLEnvironment::ENV_LOCAL);
             LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::TRANSITION_INSTANT);
             defocusEnvFloaters();