diff --git a/indra/newview/app_settings/shaders/class1/deferred/aoUtil.glsl b/indra/newview/app_settings/shaders/class1/deferred/aoUtil.glsl
index f93ed6bc6d76becd410e59d0e1bbf7e3c0516217..37fe8287be3b54badf4001fc913a0c3e8fcd77b0 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/aoUtil.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/aoUtil.glsl
@@ -50,7 +50,7 @@ float getDepthAo(vec2 pos_screen)
 vec4 getPositionAo(vec2 pos_screen)
 {
     float depth = getDepthAo(pos_screen);
-    vec2 sc = (pos_screen);
+    vec2 sc = getScreenCoordinateAo(pos_screen);
     vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
     vec4 pos = inv_proj * ndc;
     pos /= pos.w;
@@ -71,7 +71,7 @@ vec2 getKern(int i)
     kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875;
     kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000;
        
-    return kern[i];
+    return kern[i] / screen_res;
 }
 
 //calculate decreases in ambient lighting when crowded out (SSAO)
@@ -79,8 +79,8 @@ float calcAmbientOcclusion(vec4 pos, vec3 norm, vec2 pos_screen)
 {
     float ret = 1.0;
     vec3 pos_world = pos.xyz;
-    vec2 noise_reflect = texture2D(noiseMap, pos_screen.xy).xy;
-        
+    vec2 noise_reflect = texture2D(noiseMap, pos_screen.xy * (screen_res / 128)).xy;
+
     float angle_hidden = 0.0;
     float points = 0;
         
@@ -91,7 +91,7 @@ float calcAmbientOcclusion(vec4 pos, vec3 norm, vec2 pos_screen)
     {
         vec2 samppos_screen = pos_screen + scale * reflect(getKern(i), noise_reflect);
         vec3 samppos_world = getPositionAo(samppos_screen).xyz; 
-        
+
         vec3 diff = pos_world - samppos_world;
         float dist2 = dot(diff, diff);
             
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
index 8feeff848be6f6d26d799703ff31cafe21369899..6763e2de7ba3b5b991acfc86e7aa073f21c5a3e4 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
@@ -76,7 +76,7 @@ void main()
     vec4 spec = texture2D(specularRect, frag.xy);
     vec3 diff = texture2D(diffuseRect, frag.xy).rgb;
 
-    float noise = texture2D(noiseMap, frag.xy / 128.0).b;
+    float noise = texture2D(noiseMap, frag.xy).b;
     vec3  npos  = normalize(-pos);
 
     // As of OSX 10.6.7 ATI Apple's crash when using a variable size loop
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
index 42a52d7908c533adfa9a3826363c8a274bef0c6b..e9dac711c3119bb36f90b37f925a216be0c42ee4 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
@@ -172,7 +172,7 @@ void main()
 		discard;
 	}
 	
-	float noise = texture2D(noiseMap, frag.xy/128.0).b;
+	float noise = texture2D(noiseMap, frag.xy).b;
 	dist_atten *= noise;
 
 	lv = proj_origin-pos.xyz;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
index 40a4f86c37a3298b7211148d5fbac104b92a46f0..f07ef92b266df97152c2d0f1644731c917b939e7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
@@ -86,7 +86,7 @@ void main()
     lv = normalize(lv);
     da = dot(norm, lv);
     
-    float noise = texture2D(noiseMap, frag.xy/128.0).b;
+    float noise = texture2D(noiseMap, frag.xy).b;
     
     vec3 col = texture2D(diffuseRect, frag.xy).rgb;
 
diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
index 7f21a074bd33a90de6a9f872974fb331d4d0b8f7..0376f42319519f77a1b21ce31e6b4d069671c57e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
@@ -181,7 +181,7 @@ void main()
 
 	vec4 spec = texture2D(specularRect, frag.xy);
 
-	float noise = texture2D(noiseMap, frag.xy/128.0).b;
+	float noise = texture2D(noiseMap, frag.xy).b;
 	vec3 dlit = vec3(0, 0, 0);
 	
 	if (proj_tc.z > 0.0 &&
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
index 24068c04b5d2462785f1ed57c9e151d0d1a92eb2..ba419e7a650eef598ab52552533486d52c13a341 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
@@ -195,7 +195,7 @@ void main()
 
     vec3 dlit = vec3(0, 0, 0);
 
-    float noise = texture2D(noiseMap, frag.xy/128.0).b;
+    float noise = texture2D(noiseMap, frag.xy).b;
     if (proj_tc.z > 0.0 &&
         proj_tc.x < 1.0 &&
         proj_tc.y < 1.0 &&
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
index c41b7b210c17cbdbc5c8e870ef40987f5dfe55f1..e6a627fbf755d48ca1aca0a4aa8cba4bf8edbc50 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
@@ -192,7 +192,7 @@ void main()
 	vec4 spec = texture2D(specularRect, frag.xy);
 	vec3 dlit = vec3(0, 0, 0);
 
-	float noise = texture2D(noiseMap, frag.xy/128.0).b;
+	float noise = texture2D(noiseMap, frag.xy).b;
 	if (proj_tc.z > 0.0 &&
 		proj_tc.x < 1.0 &&
 		proj_tc.y < 1.0 &&
diff --git a/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl
index 43327be49f42d00fea9d6d95cc19b66473af9ce6..7d8f9c218d110d647d8e000cecfd87b0ba18ea90 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/multiPointLightF.glsl
@@ -133,7 +133,7 @@ void main()
     else
     {
 
-        float noise = texture2D(noiseMap, tc/128.0).b;
+        float noise = texture2D(noiseMap, tc).b;
 
         diffuse = srgb_to_linear(diffuse);
         spec.rgb = srgb_to_linear(spec.rgb);
diff --git a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl
index 4a172f7a1025d48e697105102f274c52ace4bca8..5ed8a75e0e8a404d1a6b89385cfb9b98a1e6f2e2 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl
@@ -187,7 +187,7 @@ void main()
         diffuse = srgb_to_linear(diffuse);
         spec.rgb = srgb_to_linear(spec.rgb);
 
-        float noise = texture2D(noiseMap, tc/128.0).b;
+        float noise = texture2D(noiseMap, tc).b;
         if (proj_tc.z > 0.0 &&
             proj_tc.x < 1.0 &&
             proj_tc.y < 1.0 &&
diff --git a/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl
index 0c8baab14ff86c1e1f5d704bbc517d3a7503c264..d9cbae45a60339accf582a653b719b92dcbc34dd 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/pointLightF.glsl
@@ -126,7 +126,7 @@ void main()
         diffuse = srgb_to_linear(diffuse);
         spec.rgb = srgb_to_linear(spec.rgb);
 
-        float noise = texture2D(noiseMap, tc/128.0).b;
+        float noise = texture2D(noiseMap, tc).b;
         float lit = nl * dist_atten * noise;
 
         final_color = color.rgb*lit*diffuse;
diff --git a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl
index 8618159313e10d8a5841d738d8ea0da67842671c..3d8b95b882ecbc2d860f31f6034fc65c933cf55f 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl
@@ -193,7 +193,7 @@ void main()
         diffuse = srgb_to_linear(diffuse);
         spec.rgb = srgb_to_linear(spec.rgb);
         
-        float noise = texture2D(noiseMap, tc/128.0).b;
+        float noise = texture2D(noiseMap, tc).b;
         if (proj_tc.z > 0.0 &&
             proj_tc.x < 1.0 &&
             proj_tc.y < 1.0 &&