diff --git a/indra/newview/app_settings/shaders/class3/deferred/hazeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/hazeF.glsl
index 229f332b36ef081c66829064129656d9f1569211..0b154e82ad04dc1d8a606df3e620ec0077beeba0 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/hazeF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/hazeF.glsl
@@ -78,13 +78,12 @@ void main()
         do_atmospherics = true;
     }
     
-
     vec3  irradiance = vec3(0);
     vec3  radiance  = vec3(0);
 
     if (depth >= 1.0)
     {
-        //should only be true of WL sky, just port over base color value
+        //should only be true of sky, clouds, sun/moon, and stars
         discard;
     }
 
diff --git a/indra/newview/lldrawpool.h b/indra/newview/lldrawpool.h
index 4300670445e63e7a87700bcca1deeb906b884bc4..0925a01439a63c1573f01cfcb4987fe728c17e8b 100644
--- a/indra/newview/lldrawpool.h
+++ b/indra/newview/lldrawpool.h
@@ -53,7 +53,9 @@ class LLDrawPool
         // before grass, so grass should be the first alpha masked pool.  Other ordering should be done
         // based on fill rate and likelihood to occlude future passes (faster, large occluders first).
         //  
-		POOL_SIMPLE = 1,
+        POOL_SKY = 1,
+        POOL_WL_SKY,
+		POOL_SIMPLE,
 		POOL_FULLBRIGHT,
 		POOL_BUMP,
 		POOL_TERRAIN,
@@ -64,8 +66,6 @@ class LLDrawPool
 		POOL_TREE,
 		POOL_ALPHA_MASK,
 		POOL_FULLBRIGHT_ALPHA_MASK,
-        POOL_SKY,
-        POOL_WL_SKY,
 		POOL_AVATAR,
 		POOL_CONTROL_AV, // Animesh
 		POOL_GLOW,
diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp
index 05ee328e4320e6409ad165b953e791bb3da68d06..b14235f25c041f5eedc554f80645e1ef08a3bfed 100644
--- a/indra/newview/lldrawpoolwlsky.cpp
+++ b/indra/newview/lldrawpoolwlsky.cpp
@@ -87,6 +87,9 @@ void LLDrawPoolWLSky::endDeferredPass(S32 pass)
     cloud_shader = nullptr;
     sun_shader   = nullptr;
     moon_shader  = nullptr;
+
+    // clear the depth buffer so haze shaders can use unwritten depth as a mask
+    glClear(GL_DEPTH_BUFFER_BIT);
 }
 
 void LLDrawPoolWLSky::renderDome(const LLVector3& camPosLocal, F32 camHeightLocal, LLGLSLShader * shader) const