diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
index 14efbf717e7aed72e440de9ec95eb2df29859b3d..5daeb2827cc3b679edbf3606e55074dc6d5806e6 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
@@ -131,6 +131,7 @@ void main()
 	vec3 pos = getPosition(frag.xy).xyz;
 	vec3 lv = center.xyz-pos.xyz;
 	float dist = length(lv);
+
 	dist /= size;
 	if (dist > 1.0)
 	{
@@ -191,7 +192,8 @@ void main()
 			lit = da * dist_atten * noise;
 
 			col = dlit*lit*diff_tex;
-			amb_da += (da*0.5)*proj_ambiance;
+
+			amb_da += (da*0.5+0.5)*proj_ambiance;
 		}
 		//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
 		vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
@@ -201,6 +203,9 @@ void main()
 		amb_da *= dist_atten * noise;
 			
 		amb_da = min(amb_da, 1.0-lit);
+
+		amb_da = max(amb_da, 0.0); // Prevent nan in lighting
+
 		col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
 	}
 
diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
index 8b9ae5874869a73d131e790532687556773f39ef..4e8ddfb2777d93ea4a9fcee8379f75c01afc5182 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
@@ -191,7 +191,7 @@ void main()
 			lit = da * dist_atten * noise;
 
 			col = dlit*lit*diff_tex;
-			amb_da += (da*0.5)*proj_ambiance;
+			amb_da += (da*0.5+0.5)*proj_ambiance;
 		}
 		//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
 		vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
@@ -201,6 +201,9 @@ void main()
 		amb_da *= dist_atten * noise;
 			
 		amb_da = min(amb_da, 1.0-lit);
+
+		amb_da = max(amb_da, 0.0); // Prevent nan in lighting
+
 		col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
 	}
 
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
index f295a7c2faf0a3fe324a0a6f09c28a1d0ce25556..c40188259207d9c054158dbf5801bd1c14b0decd 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
@@ -215,6 +215,8 @@ void main()
         amb_da *= dist_atten * noise;
         amb_da = min(amb_da, 1.0-lit);
 
+        amb_da = max(amb_da, 0.0); // Prevent nan in lighting
+
         col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
     }
     
@@ -275,10 +277,7 @@ void main()
     }
 #endif
 
-    //not sure why, but this line prevents MATBUG-194
-    col = max(col, vec3(0.0));
-
-    //output linear
+    //output linear, sum of lights will be gamma corrected later	
     frag_color.rgb = col;
     frag_color.a = 0.0;
 }
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
index 44b34061ffe985f18daf93c39a4cb51315131b17..30db661534dba79dd5b9d1ac7b80fc79a7585d9d 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
@@ -213,6 +213,7 @@ void main()
 		amb_da += (da*da*0.5+0.5) /* * (1.0-shadow) */ * proj_ambiance;
 		amb_da *= dist_atten * noise;
 		amb_da = min(amb_da, 1.0-lit);
+		amb_da = max(amb_da, 0.0); // Prevent nan in lighting
 	
 	    col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
 	}
@@ -273,10 +274,6 @@ void main()
 		}
 	}
 #endif
-	
-	//not sure why, but this line prevents MATBUG-194
-	col = max(col, vec3(0.0));
-
 	//output linear colors as gamma correction happens down stream
 	frag_color.rgb = col;	
 	frag_color.a = 0.0;