diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudShadowF.glsl
index 0efde5f949e6c14a4daf32053e85cf9fec89bbf2..0157d166e0d901d54a4fe6cd71231f7238cf99c7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/cloudShadowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/cloudShadowF.glsl
@@ -82,12 +82,12 @@ void main()
         vec2 disturbance2 = vec2(cloudNoise((uv1 + uv3) / 4.0f).x, cloudNoise((uv4 + uv2) / 8.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f);
     
         // Offset texture coords
-        uv1 += cloud_pos_density1.xy + (disturbance * 0.02);    //large texture, visible density
+        uv1 += cloud_pos_density1.xy + (disturbance * 0.2);    //large texture, visible density
         uv2 += cloud_pos_density1.xy;   //large texture, self shadow
         uv3 += cloud_pos_density2.xy;   //small texture, visible density
         uv4 += cloud_pos_density2.xy;   //small texture, self shadow
     
-        float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0 + disturbance2.x + disturbance2.y));
+        float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0 + disturbance2.x + disturbance2.y) * 4.0);
     
         cloudDensity *= 1.0 - (density_variance * density_variance);
     
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
index d6bd0a7917a71d2c81535d603c39af16975ca866..f6694aae2ae2935ba7c6eae67593259ac95d3987 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
@@ -85,12 +85,12 @@ void main()
     vec2 disturbance2 = vec2(cloudNoise((uv1 + uv3) / 4.0f).x, cloudNoise((uv4 + uv2) / 8.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f);
 
     // Offset texture coords
-    uv1 += cloud_pos_density1.xy + (disturbance * 0.02);    //large texture, visible density
+    uv1 += cloud_pos_density1.xy + (disturbance * 0.2);    //large texture, visible density
     uv2 += cloud_pos_density1.xy;   //large texture, self shadow
     uv3 += cloud_pos_density2.xy;   //small texture, visible density
     uv4 += cloud_pos_density2.xy;   //small texture, self shadow
 
-    float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0 + disturbance2.x + disturbance2.y));
+    float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0 + disturbance2.x + disturbance2.y) * 4.0);
 
     cloudDensity *= 1.0 - (density_variance * density_variance);
 
diff --git a/indra/newview/app_settings/shaders/class1/windlight/cloudShadowF.glsl b/indra/newview/app_settings/shaders/class1/windlight/cloudShadowF.glsl
index 1d004b2b3eaa778d023cc720291e330769ecae2b..82fad4db5a6c536df68cb963e4f4413985518622 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/cloudShadowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/cloudShadowF.glsl
@@ -82,12 +82,12 @@ void main()
         vec2 disturbance2 = vec2(cloudNoise((uv1 + uv3) / 4.0f).x, cloudNoise((uv4 + uv2) / 8.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f);
     
         // Offset texture coords
-        uv1 += cloud_pos_density1.xy + (disturbance * 0.02);    //large texture, visible density
+        uv1 += cloud_pos_density1.xy + (disturbance * 0.2);    //large texture, visible density
         uv2 += cloud_pos_density1.xy;   //large texture, self shadow
         uv3 += cloud_pos_density2.xy;   //small texture, visible density
         uv4 += cloud_pos_density2.xy;   //small texture, self shadow
     
-        float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0 + disturbance2.x + disturbance2.y));
+        float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0 + disturbance2.x + disturbance2.y) * 4.0);
     
         cloudDensity *= 1.0 - (density_variance * density_variance);
     
diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
index e7ae2d52e3c6db35b0153dcf4428955b080d159d..3ac0fc224bd3901803819617ba28776fd7ed3c16 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
@@ -86,12 +86,12 @@ void main()
     vec2 disturbance2 = vec2(cloudNoise((uv1 + uv3) / 4.0f).x, cloudNoise((uv4 + uv2) / 8.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f);
 
     // Offset texture coords
-    uv1 += cloud_pos_density1.xy + (disturbance * 0.02);    //large texture, visible density
+    uv1 += cloud_pos_density1.xy + (disturbance * 0.2);    //large texture, visible density
     uv2 += cloud_pos_density1.xy;   //large texture, self shadow
     uv3 += cloud_pos_density2.xy;   //small texture, visible density
     uv4 += cloud_pos_density2.xy;   //small texture, self shadow
 
-    float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0 + disturbance2.x + disturbance2.y));
+    float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0 + disturbance2.x + disturbance2.y) * 4.0);
 
     cloudDensity *= 1.0 - (density_variance * density_variance);
 
diff --git a/indra/newview/app_settings/shaders/class3/deferred/cloudShadowF.glsl b/indra/newview/app_settings/shaders/class3/deferred/cloudShadowF.glsl
index ae521afdadaab035a564c6af10004dacf94e0b02..32210f60dc25a1f043aae0a00fe63da42b8a974c 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/cloudShadowF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/cloudShadowF.glsl
@@ -79,12 +79,12 @@ void main()
         vec2 disturbance2 = vec2(cloudNoise((uv1 + uv3) / 4.0f).x, cloudNoise((uv4 + uv2) / 8.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f);
     
         // Offset texture coords
-        uv1 += cloud_pos_density1.xy + (disturbance * 0.02);    //large texture, visible density
+        uv1 += cloud_pos_density1.xy + (disturbance * 0.2);    //large texture, visible density
         uv2 += cloud_pos_density1.xy;   //large texture, self shadow
         uv3 += cloud_pos_density2.xy;   //small texture, visible density
         uv4 += cloud_pos_density2.xy;   //small texture, self shadow
     
-        float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0 + disturbance2.x + disturbance2.y));
+        float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0 + disturbance2.x + disturbance2.y) * 4.0);
     
         cloudDensity *= 1.0 - (density_variance * density_variance);
     
diff --git a/indra/newview/app_settings/shaders/class3/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class3/deferred/cloudsF.glsl
index 1abe2fab634b67ceb2d9dab05ddd0de7c2802e08..e40d7e7c75381f3678f5721492e2a322b737b2b8 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/cloudsF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/cloudsF.glsl
@@ -95,12 +95,12 @@ void main()
     vec2 disturbance = vec2(cloudNoise(uv1 / 16.0f).x, cloudNoise((uv3 + uv1) / 16.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f);
 
     // Offset texture coords
-    uv1 += cloud_pos_density1.xy + disturbance; //large texture, visible density
+    uv1 += cloud_pos_density1.xy + (disturbance * 0.2); //large texture, visible density
     uv2 += cloud_pos_density1.xy;   //large texture, self shadow
-    uv3 += cloud_pos_density2.xy + disturbance; //small texture, visible density
+    uv3 += cloud_pos_density2.xy; //small texture, visible density
     uv4 += cloud_pos_density2.xy;   //small texture, self shadow
 
-    float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0));
+    float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0) * 4.0);
 
     cloudDensity *= 1.0 - (density_variance * density_variance);
 
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index d149a61d8976b02213ce41644ed9337db9eba245..02ef7612a7a19990b6f3ca80319686be2941aa4c 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -5522,6 +5522,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 						}
 
 						LLMaterial* mat = te->getMaterialParams().get();
+                        bool fullbright = te->getFullbright();
 
 						if (mat && LLPipeline::sRenderDeferred)
 						{
@@ -5536,15 +5537,18 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 								alpha_mode = LLMaterial::DIFFUSE_ALPHA_MODE_BLEND;
 							}
 
-							if (!is_alpha || te_alpha > 0.f)  // //only add the face if it will actually be visible
+                            if (fullbright && (alpha_mode == LLMaterial::DIFFUSE_ALPHA_MODE_NONE))
+                            {
+                                pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_FULLBRIGHT);
+                            }
+							else if (!is_alpha || te_alpha > 0.f)  // //only add the face if it will actually be visible
 							{ 
 								U32 mask = mat->getShaderMask(alpha_mode);
 								pool->addRiggedFace(facep, mask);
 							}
 						}
 						else if (mat)
-						{
-							bool fullbright = te->getFullbright();
+						{							
 							bool is_alpha = type == LLDrawPool::POOL_ALPHA;
 							U8 mode = mat->getDiffuseAlphaMode();
 							bool can_be_shiny = mode == LLMaterial::DIFFUSE_ALPHA_MODE_NONE ||