diff --git a/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl
index dca2862b5ac47d3ec1616447fd11c0a38a890a25..5cb63912beac3c8826c3f1c385b889b591467d12 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl
@@ -127,7 +127,7 @@ void main()
     light_atten = (blue_density + vec4(haze_density * 0.25)) * (dens_mul * max_y);
 
     // Calculate relative weights
-    temp1 = blue_density + haze_density;
+    temp1 = abs(blue_density) + vec4(abs(haze_density));
     blue_weight = blue_density / temp1;
     haze_weight = haze_density / temp1;
 
@@ -142,7 +142,8 @@ void main()
     // Transparency (-> temp1)
     // ATI Bugfix -- can't store temp1*temp2.z in a variable because the ati
     // compiler gets confused.
-    temp1 = exp(-temp1 * temp2.z * dist_mul);
+    //temp1 = exp(-temp1 * temp2.z * dist_mul);
+    temp1 = exp(-temp1 * dist_mul);
 
     // Compute haze glow
     temp2.x = dot(Pn, lightnorm.xyz);
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index b01e148fca301b3571793032f230cd73fbc31b02..33b953beb72e390d9366200a5a7e44b6cd2ebd9e 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -8403,8 +8403,11 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, LLRenderTarget* light_
     
     shader.uniform4fv(LLShaderMgr::SUNLIGHT_COLOR, 1, mSunDiffuse.mV);
     shader.uniform4fv(LLShaderMgr::MOONLIGHT_COLOR, 1, mMoonDiffuse.mV);
+    
 
     LLEnvironment& environment = LLEnvironment::instance();
+    LLColor4 ambient(environment.getCurrentSky()->getTotalAmbient());
+    shader.uniform4fv(LLShaderMgr::AMBIENT, 1, ambient.mV);
     shader.uniform1i(LLShaderMgr::SUN_UP_FACTOR, environment.getIsSunUp() ? 1 : 0);
     shader.uniform1f(LLShaderMgr::SUN_MOON_GLOW_FACTOR, environment.getCurrentSky()->getSunMoonGlowFactor());