diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp
index 9f330385044efc3f9bab4448f6e78bfaab82a8c5..402b705969646ba4312899eb3ddce581f73215f5 100644
--- a/indra/newview/llenvironment.cpp
+++ b/indra/newview/llenvironment.cpp
@@ -1574,10 +1574,16 @@ void LLEnvironment::update(const LLViewerCamera * cam)
         end_shaders = LLViewerShaderMgr::instance()->endShaders();
         for (shaders_iter = LLViewerShaderMgr::instance()->beginShaders(); shaders_iter != end_shaders; ++shaders_iter)
         {
-            if ((shaders_iter->mProgramObject != 0)
-                && (gPipeline.canUseWindLightShaders()
-                || shaders_iter->mShaderGroup == LLGLSLShader::SG_WATER))
-            {
+			if ((shaders_iter->mProgramObject != 0) &&
+				(shaders_iter->mFeatures.atmosphericHelpers
+					|| shaders_iter->mFeatures.calculatesAtmospherics
+					|| shaders_iter->mFeatures.hasAtmospherics
+					|| shaders_iter->mFeatures.hasGamma
+					|| shaders_iter->mFeatures.hasTransport
+					|| shaders_iter->mFeatures.hasWaterFog) &&
+				(gPipeline.canUseWindLightShaders()
+					|| shaders_iter->mShaderGroup == LLGLSLShader::SG_WATER))
+			{
                 shaders_iter->mUniformsDirty = TRUE;
             }
         }
@@ -2215,9 +2221,10 @@ LLEnvironment::EnvironmentInfo::ptr_t LLEnvironment::EnvironmentInfo::extractLeg
         pinfo->mDayHash = pinfo->mDayCycle->getHash();
 
     pinfo->mAltitudes[0] = 0;
-    pinfo->mAltitudes[2] = 10001;
-    pinfo->mAltitudes[3] = 10002;
-    pinfo->mAltitudes[4] = 10003;
+    pinfo->mAltitudes[1] = 10001;
+    pinfo->mAltitudes[2] = 10002;
+    pinfo->mAltitudes[3] = 10003;
+
 
     return pinfo;
 }