diff --git a/indra/llinventory/llsettingswater.cpp b/indra/llinventory/llsettingswater.cpp
index d732032a6c5c3ddf59a6ffa538fa6dfc4c89154b..348848b29a79fc58ca2cdf10d3b91c89f400eccf 100644
--- a/indra/llinventory/llsettingswater.cpp
+++ b/indra/llinventory/llsettingswater.cpp
@@ -230,7 +230,7 @@ LLSettingsWater::validation_list_t LLSettingsWater::validationList()
                 llsd::array(0.0f, 0.0f, 0.0f, 1.0f),
                 llsd::array(1.0f, 1.0f, 1.0f, 1.0f))));
         validation.push_back(Validator(SETTING_FOG_DENSITY, true, LLSD::TypeReal,
-            boost::bind(&Validator::verifyFloatRange, _1, _2, llsd::array(-10.0f, 10.0f))));
+            boost::bind(&Validator::verifyFloatRange, _1, _2, llsd::array(0.001f, 100.0f))));
         validation.push_back(Validator(SETTING_FOG_MOD, true, LLSD::TypeReal,
             boost::bind(&Validator::verifyFloatRange, _1, _2, llsd::array(0.0f, 20.0f))));
         validation.push_back(Validator(SETTING_FRESNEL_OFFSET, true, LLSD::TypeReal,
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index c90c9c543ca3f264014a402c64e5132775bcc6dc..cb4e5ec7f3f9c82efd89dbc0e409292f65cfea39 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -10544,7 +10544,7 @@
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>20.0</real>
+    <real>2.0</real>
   </map>
   <key>RenderReflectionProbeLevel</key>
   <map>
@@ -10632,7 +10632,7 @@
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>0.3</real>
+    <real>0.4</real>
   </map>
     <key>RenderShaderLODThreshold</key>
     <map>
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index 6aa2316589662ae67bf222a68b89c2100eaa299b..060129d275d5e039044adfbf2fb54e667b42b6f7 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -243,11 +243,13 @@ void LLDrawPoolAlpha::forwardRender(bool rigged)
     //enable writing to alpha for emissive effects
     gGL.setColorMask(true, true);
 
-    bool write_depth = rigged || 
+    bool write_depth = rigged ||
         LLDrawPoolWater::sSkipScreenCopy
         // we want depth written so that rendered alpha will
         // contribute to the alpha mask used for impostors
-        || LLPipeline::sImpostorRenderAlphaDepthPass;
+        || LLPipeline::sImpostorRenderAlphaDepthPass
+        || getType() == LLDrawPoolAlpha::POOL_ALPHA_PRE_WATER; // needed for accurate water fog
+
 
     LLGLDepthTest depth(GL_TRUE, write_depth ? GL_TRUE : GL_FALSE);
 
diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp
index 15d41c4161b8edf63c7f934e7ce443d29295f84f..e30aba3df758881aa918ae7eac9000e885f9d99d 100644
--- a/indra/newview/llreflectionmapmanager.cpp
+++ b/indra/newview/llreflectionmapmanager.cpp
@@ -323,11 +323,17 @@ void LLReflectionMapManager::update()
         mRadiancePass = radiance_pass;
     }
 
-    static LLCachedControl<F32> sUpdatePeriod(gSavedSettings, "RenderDefaultProbeUpdatePeriod", 20.f);
-    if (sLevel == 0 &&
-        gFrameTimeSeconds - mDefaultProbe->mLastUpdateTime < sUpdatePeriod)
-    { // when probes are disabled don't update the default probe more often than once every 20 seconds
-        oldestProbe = nullptr;
+    static LLCachedControl<F32> sUpdatePeriod(gSavedSettings, "RenderDefaultProbeUpdatePeriod", 2.f);
+    if ((gFrameTimeSeconds - mDefaultProbe->mLastUpdateTime) < sUpdatePeriod)
+    {
+        if (sLevel == 0)
+        { // when probes are disabled don't update the default probe more often than the prescribed update period
+            oldestProbe = nullptr;
+        }
+    }
+    else if (sLevel > 0)
+    { // when probes are enabled don't update the default probe less often than the prescribed update period
+      oldestProbe = mDefaultProbe;
     }
 
     // switch to updating the next oldest probe
diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp
index 6321dbc085f51659463bbcf7087beba8ffa1a880..258cc1c7b2059f609d84eb56fc9d54ef2f6298eb 100644
--- a/indra/newview/llsettingsvo.cpp
+++ b/indra/newview/llsettingsvo.cpp
@@ -1023,13 +1023,6 @@ LLSettingsWater::parammapping_t LLSettingsVOWater::getParameterMap() const
 {
     static parammapping_t param_map;
 
-    if (param_map.empty())
-    {
-        //LLSD water_defaults = LLSettingsWater::defaults();
-        //param_map[SETTING_FOG_COLOR] = DefaultParam(LLShaderMgr::WATER_FOGCOLOR, water_defaults[SETTING_FOG_COLOR]);
-        // let this get set by LLSettingsVOWater::applySpecial so that it can properly reflect the underwater modifier
-        //param_map[SETTING_FOG_DENSITY] = DefaultParam(LLShaderMgr::WATER_FOGDENSITY, water_defaults[SETTING_FOG_DENSITY]);
-    }
     return param_map;
 }
 
diff --git a/indra/newview/skins/default/xui/en/panel_settings_water.xml b/indra/newview/skins/default/xui/en/panel_settings_water.xml
index 1aa42af3a8ce354f90ba57ba276bbed9cb625c3b..f19629df264c33e18db53dae7403d508df38fe2e 100644
--- a/indra/newview/skins/default/xui/en/panel_settings_water.xml
+++ b/indra/newview/skins/default/xui/en/panel_settings_water.xml
@@ -72,8 +72,8 @@
                     initial_value="0"
                     layout="top"
                     left_delta="15"
-                    min_val="-10"
-                    max_val="10"
+                    min_val="0.001"
+                    max_val="100"
                     name="water_fog_density"
                     top_delta="5"
                     width="150"