diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl
index 8b8b338f6851ffbf916ec28a3399b67b3c6e4b5f..bd11aa3f05865f385d1ad22f17f5dfa038a8f3f7 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl
@@ -31,10 +31,19 @@ uniform vec2 screen_res;
 
 VARYING vec2 vary_fragcoord;
 
+// forwards
+void setAtmosAttenuation(vec3 c);
+void setAdditiveColor(vec3 c);
+
 void main()
 {
 	//transform vertex
 	vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
 	gl_Position = pos; 
+
+    // appease OSX GLSL compiler/linker by touching all the varyings we said we would
+    setAtmosAttenuation(vec3(1));
+    setAdditiveColor(vec3(0));
+
 	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
 }
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
index ea37610502e25b7956b9b3d70c6f8a0ec560ff23..d758f85d713eafb34643c126c6212f17ef6fa136 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
@@ -24,7 +24,6 @@
  */
  
 
-VARYING vec3 vary_SunlitColor;
 VARYING vec3 vary_AdditiveColor;
 VARYING vec3 vary_AtmosAttenuation;
 
diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp
index 7cd9503e4d992dfe6e9b614329ceac7583442453..0e1c4f943468441151193def0616499d121d1831 100644
--- a/indra/newview/llenvironment.cpp
+++ b/indra/newview/llenvironment.cpp
@@ -851,8 +851,6 @@ void LLEnvironment::initSingleton()
     }
 
     LLEventPumps::instance().obtain(PUMP_EXPERIENCE).listen(LISTENER_NAME, [this](LLSD message) { listenExperiencePump(message); return false; });
-
-    loadFromSettings();
 }
 
 void LLEnvironment::cleanupSingleton()
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 8093a3a589e244d3d29a1d69fcafcf1d52222e34..a1d1e85492b167f92f1a4b2345e73935af26fd59 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1878,7 +1878,11 @@ bool idle_startup()
 		}
 
 		display_startup();
-        
+
+        // Load stored local environment if needed. Only should be done once at least
+        // initial region data got loaded to avoid race condition with region's environment
+        LLEnvironment::instance().loadFromSettings();
+
         // *TODO : Uncomment that line once the whole grid migrated to SLM and suppress it from LLAgent::handleTeleportFinished() (llagent.cpp)
         //check_merchant_status();