diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index c131cb886f4b2f1d202e9289ff6635890f8694cd..1e631a2272db3f671b4a6d0951498b23c52f01a3 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -630,7 +630,7 @@ void LLVOSky::initAtmospherics(void)
 	dome_radius = LLWLParamManager::getInstance()->getDomeRadius();
 	dome_offset_ratio = LLWLParamManager::getInstance()->getDomeOffset();
 	sunlight_color = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("sunlight_color", error));
-	ambient = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("ambient", error));
+	ambient = LLColor3(LLWLParamManager::getInstance()->mCurParams.getAmbient());
 	//lightnorm = LLWLParamManager::getInstance()->mCurParams.getVector("lightnorm", error);
 	gamma = LLWLParamManager::getInstance()->mCurParams.getFloat("gamma", error);
 	blue_density = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("blue_density", error));
diff --git a/indra/newview/llwlparamset.cpp b/indra/newview/llwlparamset.cpp
index 066cb9a0ace352fa61aca7f4204323633b77d652..cd7a32abdd44729a2654fb7a823d02f7f960d4eb 100644
--- a/indra/newview/llwlparamset.cpp
+++ b/indra/newview/llwlparamset.cpp
@@ -284,6 +284,11 @@ void LLWLParamSet::setEastAngle(float val)
 	mParamValues["east_angle"] = val;
 }
 
+void LLWLParamSet::setAmbient(const LLVector4& val)
+{
+	set("ambient", val);
+}
+
 void LLWLParamSet::mix(LLWLParamSet& src, LLWLParamSet& dest, F32 weight)
 {
 	// set up the iterators
@@ -379,6 +384,19 @@ void LLWLParamSet::mix(LLWLParamSet& src, LLWLParamSet& dest, F32 weight)
 
 	setSunAngle((1 - weight) * srcSunAngle + weight * destSunAngle);
 	setEastAngle((1 - weight) * srcEastAngle + weight * destEastAngle);
+
+    // ambient
+
+    LLVector4 srcAmbient = src.getAmbient();
+    LLVector4 destAmbient = dest.getAmbient();
+    LLVector4 rsltAmbient;
+
+    for (int i = 0; i < LENGTHOFVECTOR4; ++i)
+    {
+        rsltAmbient.mV[i] = srcAmbient.mV[i] + ((destAmbient.mV[i] - srcAmbient.mV[i]) * weight);
+    }
+
+    setAmbient(rsltAmbient);
 	
 	// now setup the sun properly
 
diff --git a/indra/newview/llwlparamset.h b/indra/newview/llwlparamset.h
index 6e5f1d3a4bc22daf5396a665d52803a77a7f1b59..9874f0f2e05f36ae647e2bf38b5f2e4f4f0c5439 100644
--- a/indra/newview/llwlparamset.h
+++ b/indra/newview/llwlparamset.h
@@ -136,6 +136,9 @@ public:
 	
 	void setEastAngle(F32 val);
 	F32 getEastAngle();	
+
+	void setAmbient(const LLVector4& val);
+	LLVector4 getAmbient();
 	
 							
 	
@@ -207,6 +210,11 @@ inline F32 LLWLParamSet::getEastAngle() {
 	return (F32) mParamValues["east_angle"].asReal();
 }
 
+inline LLVector4 LLWLParamSet::getAmbient() {
+    bool error;
+    return mParamValues.has("ambient") ? getVector("ambient", error) : LLVector4(0.5f, 0.75f, 1.0f, 1.19f);
+}
+
 
 inline void LLWLParamSet::setEnableCloudScrollX(bool val) {
 	mParamValues["enable_cloud_scroll"][0] = val;