diff --git a/indra/newview/llfloatereditsky.cpp b/indra/newview/llfloatereditsky.cpp
index 053208202dd61f4ef15aa9cb1e03f6fdea2d9d71..60b6fd7cf1f40ecc9e6a310059ea320d9b51f7aa 100644
--- a/indra/newview/llfloatereditsky.cpp
+++ b/indra/newview/llfloatereditsky.cpp
@@ -1,5 +1,5 @@
 /** 
- * @file llfloatereditsky.h
+ * @file llfloatereditsky.cpp
  * @brief Floater to create or edit a sky preset
  *
  * $LicenseInfo:firstyear=2011&license=viewerlgpl$
@@ -39,12 +39,13 @@
 
 // newview
 #include "llagent.h"
+#include "llcolorswatch.h"
 #include "llregioninfomodel.h"
 #include "llviewerregion.h"
 
-#undef max
-
 static const F32 WL_SUN_AMBIENT_SLIDER_SCALE = 3.0f;
+static const F32 WL_BLUE_HORIZON_DENSITY_SCALE = 2.0f;
+static const F32 WL_CLOUD_SLIDER_SCALE = 1.0f;
 
 LLFloaterEditSky::LLFloaterEditSky(const LLSD &key)
 :	LLFloater(key)
@@ -130,11 +131,7 @@ void LLFloaterEditSky::initCallbacks(void)
 	LLWLParamManager& param_mgr = LLWLParamManager::instance();
 
 	// blue horizon
-	getChild<LLUICtrl>("WLBlueHorizonR")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlRMoved, this, _1, &param_mgr.mBlueHorizon));
-	getChild<LLUICtrl>("WLBlueHorizonR")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlRMoved, this, _1, &param_mgr.mBlueHorizon));
-	getChild<LLUICtrl>("WLBlueHorizonG")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlGMoved, this, _1, &param_mgr.mBlueHorizon));
-	getChild<LLUICtrl>("WLBlueHorizonB")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlBMoved, this, _1, &param_mgr.mBlueHorizon));
-	getChild<LLUICtrl>("WLBlueHorizonI")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlIMoved, this, _1, &param_mgr.mBlueHorizon));
+	getChild<LLUICtrl>("WLBlueHorizon")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlMoved, this, _1, &param_mgr.mBlueHorizon));
 
 	// haze density, horizon, mult, and altitude
 	getChild<LLUICtrl>("WLHazeDensity")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlRMoved, this, _1, &param_mgr.mHazeDensity));
@@ -143,28 +140,19 @@ void LLFloaterEditSky::initCallbacks(void)
 	getChild<LLUICtrl>("WLMaxAltitude")->setCommitCallback(boost::bind(&LLFloaterEditSky::onFloatControlMoved, this, _1, &param_mgr.mMaxAlt));
 
 	// blue density
-	getChild<LLUICtrl>("WLBlueDensityR")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlRMoved, this, _1, &param_mgr.mBlueDensity));
-	getChild<LLUICtrl>("WLBlueDensityG")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlGMoved, this, _1, &param_mgr.mBlueDensity));
-	getChild<LLUICtrl>("WLBlueDensityB")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlBMoved, this, _1, &param_mgr.mBlueDensity));
-	getChild<LLUICtrl>("WLBlueDensityI")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlIMoved, this, _1, &param_mgr.mBlueDensity));
+	getChild<LLUICtrl>("WLBlueDensity")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlMoved, this, _1, &param_mgr.mBlueDensity));
 
 	// Lighting
 
 	// sunlight
-	getChild<LLUICtrl>("WLSunlightR")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlRMoved, this, _1, &param_mgr.mSunlight));
-	getChild<LLUICtrl>("WLSunlightG")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlGMoved, this, _1, &param_mgr.mSunlight));
-	getChild<LLUICtrl>("WLSunlightB")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlBMoved, this, _1, &param_mgr.mSunlight));
-	getChild<LLUICtrl>("WLSunlightI")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlIMoved, this, _1, &param_mgr.mSunlight));
+	getChild<LLUICtrl>("WLSunlight")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlMoved, this, _1, &param_mgr.mSunlight));
 
 	// glow
 	getChild<LLUICtrl>("WLGlowR")->setCommitCallback(boost::bind(&LLFloaterEditSky::onGlowRMoved, this, _1, &param_mgr.mGlow));
 	getChild<LLUICtrl>("WLGlowB")->setCommitCallback(boost::bind(&LLFloaterEditSky::onGlowBMoved, this, _1, &param_mgr.mGlow));
 
 	// ambient
-	getChild<LLUICtrl>("WLAmbientR")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlRMoved, this, _1, &param_mgr.mAmbient));
-	getChild<LLUICtrl>("WLAmbientG")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlGMoved, this, _1, &param_mgr.mAmbient));
-	getChild<LLUICtrl>("WLAmbientB")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlBMoved, this, _1, &param_mgr.mAmbient));
-	getChild<LLUICtrl>("WLAmbientI")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlIMoved, this, _1, &param_mgr.mAmbient));
+	getChild<LLUICtrl>("WLAmbient")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlMoved, this, _1, &param_mgr.mAmbient));
 
 	// time of day
 	getChild<LLUICtrl>("WLSunAngle")->setCommitCallback(boost::bind(&LLFloaterEditSky::onSunMoved, this, _1, &param_mgr.mLightnorm));
@@ -173,10 +161,7 @@ void LLFloaterEditSky::initCallbacks(void)
 	// Clouds
 
 	// Cloud Color
-	getChild<LLUICtrl>("WLCloudColorR")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlRMoved, this, _1, &param_mgr.mCloudColor));
-	getChild<LLUICtrl>("WLCloudColorG")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlGMoved, this, _1, &param_mgr.mCloudColor));
-	getChild<LLUICtrl>("WLCloudColorB")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlBMoved, this, _1, &param_mgr.mCloudColor));
-	getChild<LLUICtrl>("WLCloudColorI")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlIMoved, this, _1, &param_mgr.mCloudColor));
+	getChild<LLUICtrl>("WLCloudColor")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlMoved, this, _1, &param_mgr.mCloudColor));
 
 	// Cloud
 	getChild<LLUICtrl>("WLCloudX")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlRMoved, this, _1, &param_mgr.mCloudMain));
@@ -214,13 +199,7 @@ void LLFloaterEditSky::syncControls()
 
 	// blue horizon
 	param_mgr->mBlueHorizon = cur_params.getVector(param_mgr->mBlueHorizon.mName, err);
-	childSetValue("WLBlueHorizonR", param_mgr->mBlueHorizon.r / 2.0);
-	childSetValue("WLBlueHorizonG", param_mgr->mBlueHorizon.g / 2.0);
-	childSetValue("WLBlueHorizonB", param_mgr->mBlueHorizon.b / 2.0);
-	childSetValue("WLBlueHorizonI",
-		std::max(param_mgr->mBlueHorizon.r / 2.0,
-			std::max(param_mgr->mBlueHorizon.g / 2.0,
-				param_mgr->mBlueHorizon.b / 2.0)));
+	setColorSwatch("WLBlueHorizon", param_mgr->mBlueHorizon, WL_BLUE_HORIZON_DENSITY_SCALE);
 
 	// haze density, horizon, mult, and altitude
 	param_mgr->mHazeDensity = cur_params.getVector(param_mgr->mHazeDensity.mName, err);
@@ -235,23 +214,13 @@ void LLFloaterEditSky::syncControls()
 
 	// blue density
 	param_mgr->mBlueDensity = cur_params.getVector(param_mgr->mBlueDensity.mName, err);
-	childSetValue("WLBlueDensityR", param_mgr->mBlueDensity.r / 2.0);
-	childSetValue("WLBlueDensityG", param_mgr->mBlueDensity.g / 2.0);
-	childSetValue("WLBlueDensityB", param_mgr->mBlueDensity.b / 2.0);
-	childSetValue("WLBlueDensityI",
-		std::max(param_mgr->mBlueDensity.r / 2.0,
-		std::max(param_mgr->mBlueDensity.g / 2.0, param_mgr->mBlueDensity.b / 2.0)));
+	setColorSwatch("WLBlueDensity", param_mgr->mBlueDensity, WL_BLUE_HORIZON_DENSITY_SCALE);
 
 	// Lighting
 
 	// sunlight
 	param_mgr->mSunlight = cur_params.getVector(param_mgr->mSunlight.mName, err);
-	childSetValue("WLSunlightR", param_mgr->mSunlight.r / WL_SUN_AMBIENT_SLIDER_SCALE);
-	childSetValue("WLSunlightG", param_mgr->mSunlight.g / WL_SUN_AMBIENT_SLIDER_SCALE);
-	childSetValue("WLSunlightB", param_mgr->mSunlight.b / WL_SUN_AMBIENT_SLIDER_SCALE);
-	childSetValue("WLSunlightI",
-		std::max(param_mgr->mSunlight.r / WL_SUN_AMBIENT_SLIDER_SCALE,
-		std::max(param_mgr->mSunlight.g / WL_SUN_AMBIENT_SLIDER_SCALE, param_mgr->mSunlight.b / WL_SUN_AMBIENT_SLIDER_SCALE)));
+	setColorSwatch("WLSunlight", param_mgr->mSunlight, WL_SUN_AMBIENT_SLIDER_SCALE);
 
 	// glow
 	param_mgr->mGlow = cur_params.getVector(param_mgr->mGlow.mName, err);
@@ -260,12 +229,7 @@ void LLFloaterEditSky::syncControls()
 
 	// ambient
 	param_mgr->mAmbient = cur_params.getVector(param_mgr->mAmbient.mName, err);
-	childSetValue("WLAmbientR", param_mgr->mAmbient.r / WL_SUN_AMBIENT_SLIDER_SCALE);
-	childSetValue("WLAmbientG", param_mgr->mAmbient.g / WL_SUN_AMBIENT_SLIDER_SCALE);
-	childSetValue("WLAmbientB", param_mgr->mAmbient.b / WL_SUN_AMBIENT_SLIDER_SCALE);
-	childSetValue("WLAmbientI",
-		std::max(param_mgr->mAmbient.r / WL_SUN_AMBIENT_SLIDER_SCALE,
-		std::max(param_mgr->mAmbient.g / WL_SUN_AMBIENT_SLIDER_SCALE, param_mgr->mAmbient.b / WL_SUN_AMBIENT_SLIDER_SCALE)));
+	setColorSwatch("WLAmbient", param_mgr->mAmbient, WL_SUN_AMBIENT_SLIDER_SCALE);
 
 	childSetValue("WLSunAngle", param_mgr->mCurParams.getFloat("sun_angle",err) / F_TWO_PI);
 	childSetValue("WLEastAngle", param_mgr->mCurParams.getFloat("east_angle",err) / F_TWO_PI);
@@ -274,12 +238,7 @@ void LLFloaterEditSky::syncControls()
 
 	// Cloud Color
 	param_mgr->mCloudColor = cur_params.getVector(param_mgr->mCloudColor.mName, err);
-	childSetValue("WLCloudColorR", param_mgr->mCloudColor.r);
-	childSetValue("WLCloudColorG", param_mgr->mCloudColor.g);
-	childSetValue("WLCloudColorB", param_mgr->mCloudColor.b);
-	childSetValue("WLCloudColorI",
-		std::max(param_mgr->mCloudColor.r,
-		std::max(param_mgr->mCloudColor.g, param_mgr->mCloudColor.b)));
+	setColorSwatch("WLCloudColor", param_mgr->mCloudColor, WL_CLOUD_SLIDER_SCALE);
 
 	// Cloud
 	param_mgr->mCloudMain = cur_params.getVector(param_mgr->mCloudMain.mName, err);
@@ -338,8 +297,43 @@ void LLFloaterEditSky::syncControls()
 	childSetValue("WLStarAlpha", param_mgr->mCurParams.getStarBrightness());
 }
 
+void LLFloaterEditSky::setColorSwatch(const std::string& name, const WLColorControl& from_ctrl, F32 k)
+{
+	// Set the value, dividing it by <k> first.
+	LLVector4 color_vec = from_ctrl;
+	getChild<LLColorSwatchCtrl>(name)->set(LLColor4(color_vec / k));
+}
 
 // color control callbacks
+void LLFloaterEditSky::onColorControlMoved(LLUICtrl* ctrl, WLColorControl* color_ctrl)
+{
+	LLWLParamManager::getInstance()->mAnimator.deactivate();
+
+	LLColorSwatchCtrl* swatch = static_cast<LLColorSwatchCtrl*>(ctrl);
+	LLVector4 color_vec(swatch->get().mV);
+
+	// Set intensity to maximum of the RGB values.
+	color_vec.mV[3] = llmax(color_vec.mV[0], llmax(color_vec.mV[1], color_vec.mV[2]));
+
+	// Multiply RGB values by the appropriate factor.
+	F32 k = WL_CLOUD_SLIDER_SCALE;
+	if (color_ctrl->isSunOrAmbientColor)
+	{
+		k = WL_SUN_AMBIENT_SLIDER_SCALE;
+	}
+	if (color_ctrl->isBlueHorizonOrDensity)
+	{
+		k = WL_BLUE_HORIZON_DENSITY_SCALE;
+	}
+
+	color_vec *= k; // intensity isn't affected by the multiplication
+
+	// Apply the new RGBI value.
+	*color_ctrl = color_vec;
+	color_ctrl->update(LLWLParamManager::getInstance()->mCurParams);
+	LLWLParamManager::getInstance()->propagateParameters();
+}
+
 void LLFloaterEditSky::onColorControlRMoved(LLUICtrl* ctrl, void* userdata)
 {
 	LLWLParamManager::getInstance()->mAnimator.deactivate();
@@ -350,11 +344,11 @@ void LLFloaterEditSky::onColorControlRMoved(LLUICtrl* ctrl, void* userdata)
 	color_ctrl->r = sldr_ctrl->getValueF32();
 	if (color_ctrl->isSunOrAmbientColor)
 	{
-		color_ctrl->r *= 3;
+		color_ctrl->r *= WL_SUN_AMBIENT_SLIDER_SCALE;
 	}
 	if (color_ctrl->isBlueHorizonOrDensity)
 	{
-		color_ctrl->r *= 2;
+		color_ctrl->r *= WL_BLUE_HORIZON_DENSITY_SCALE;
 	}
 
 	// move i if it's the max
@@ -366,11 +360,11 @@ void LLFloaterEditSky::onColorControlRMoved(LLUICtrl* ctrl, void* userdata)
 
 		if (color_ctrl->isSunOrAmbientColor)
 		{
-			childSetValue(name, color_ctrl->r / 3);
+			childSetValue(name, color_ctrl->r / WL_SUN_AMBIENT_SLIDER_SCALE);
 		}
 		else if	(color_ctrl->isBlueHorizonOrDensity)
 		{
-			childSetValue(name, color_ctrl->r / 2);
+			childSetValue(name, color_ctrl->r / WL_BLUE_HORIZON_DENSITY_SCALE);
 		}
 		else
 		{
@@ -393,11 +387,11 @@ void LLFloaterEditSky::onColorControlGMoved(LLUICtrl* ctrl, void* userdata)
 	color_ctrl->g = sldr_ctrl->getValueF32();
 	if (color_ctrl->isSunOrAmbientColor)
 	{
-		color_ctrl->g *= 3;
+		color_ctrl->g *= WL_SUN_AMBIENT_SLIDER_SCALE;
 	}
 	if (color_ctrl->isBlueHorizonOrDensity)
 	{
-		color_ctrl->g *= 2;
+		color_ctrl->g *= WL_BLUE_HORIZON_DENSITY_SCALE;
 	}
 
 	// move i if it's the max
@@ -409,11 +403,11 @@ void LLFloaterEditSky::onColorControlGMoved(LLUICtrl* ctrl, void* userdata)
 
 		if (color_ctrl->isSunOrAmbientColor)
 		{
-			childSetValue(name, color_ctrl->g / 3);
+			childSetValue(name, color_ctrl->g / WL_SUN_AMBIENT_SLIDER_SCALE);
 		}
 		else if (color_ctrl->isBlueHorizonOrDensity)
 		{
-			childSetValue(name, color_ctrl->g / 2);
+			childSetValue(name, color_ctrl->g / WL_BLUE_HORIZON_DENSITY_SCALE);
 		}
 		else
 		{
@@ -436,11 +430,11 @@ void LLFloaterEditSky::onColorControlBMoved(LLUICtrl* ctrl, void* userdata)
 	color_ctrl->b = sldr_ctrl->getValueF32();
 	if (color_ctrl->isSunOrAmbientColor)
 	{
-		color_ctrl->b *= 3;
+		color_ctrl->b *= WL_SUN_AMBIENT_SLIDER_SCALE;
 	}
 	if (color_ctrl->isBlueHorizonOrDensity)
 	{
-		color_ctrl->b *= 2;
+		color_ctrl->b *= WL_BLUE_HORIZON_DENSITY_SCALE;
 	}
 
 	// move i if it's the max
@@ -452,11 +446,11 @@ void LLFloaterEditSky::onColorControlBMoved(LLUICtrl* ctrl, void* userdata)
 
 		if (color_ctrl->isSunOrAmbientColor)
 		{
-			childSetValue(name, color_ctrl->b / 3);
+			childSetValue(name, color_ctrl->b / WL_SUN_AMBIENT_SLIDER_SCALE);
 		}
 		else if (color_ctrl->isBlueHorizonOrDensity)
 		{
-			childSetValue(name, color_ctrl->b / 2);
+			childSetValue(name, color_ctrl->b / WL_BLUE_HORIZON_DENSITY_SCALE);
 		}
 		else
 		{
@@ -469,96 +463,6 @@ void LLFloaterEditSky::onColorControlBMoved(LLUICtrl* ctrl, void* userdata)
 	LLWLParamManager::getInstance()->propagateParameters();
 }
 
-void LLFloaterEditSky::onColorControlIMoved(LLUICtrl* ctrl, void* userdata)
-{
-	LLWLParamManager::getInstance()->mAnimator.deactivate();
-
-	LLSliderCtrl* sldr_ctrl = static_cast<LLSliderCtrl*>(ctrl);
-	WLColorControl* color_ctrl = static_cast<WLColorControl *>(userdata);
-
-	color_ctrl->i = sldr_ctrl->getValueF32();
-
-	// only for sliders where we pass a name
-	if (color_ctrl->hasSliderName)
-	{
-		// set it to the top
-		F32 maxVal = std::max(std::max(color_ctrl->r, color_ctrl->g), color_ctrl->b);
-		F32 iVal;
-
-		if (color_ctrl->isSunOrAmbientColor)
-		{
-			iVal = color_ctrl->i * 3;
-		}
-		else if (color_ctrl->isBlueHorizonOrDensity)
-		{
-			iVal = color_ctrl->i * 2;
-		}
-		else
-		{
-			iVal = color_ctrl->i;
-		}
-
-		// get the names of the other sliders
-		std::string rName = color_ctrl->mSliderName;
-		rName.append("R");
-		std::string gName = color_ctrl->mSliderName;
-		gName.append("G");
-		std::string bName = color_ctrl->mSliderName;
-		bName.append("B");
-
-		// handle if at 0
-		if (iVal == 0)
-		{
-			color_ctrl->r = 0;
-			color_ctrl->g = 0;
-			color_ctrl->b = 0;
-
-		// if all at the start
-		// set them all to the intensity
-		}
-		else if (maxVal == 0)
-		{
-			color_ctrl->r = iVal;
-			color_ctrl->g = iVal;
-			color_ctrl->b = iVal;
-
-		}
-		else
-		{
-			// add delta amounts to each
-			F32 delta = (iVal - maxVal) / maxVal;
-			color_ctrl->r *= (1.0f + delta);
-			color_ctrl->g *= (1.0f + delta);
-			color_ctrl->b *= (1.0f + delta);
-		}
-
-		// divide sun color vals by three
-		if (color_ctrl->isSunOrAmbientColor)
-		{
-			childSetValue(rName, color_ctrl->r/3);
-			childSetValue(gName, color_ctrl->g/3);
-			childSetValue(bName, color_ctrl->b/3);
-		}
-		else if (color_ctrl->isBlueHorizonOrDensity)
-		{
-			childSetValue(rName, color_ctrl->r/2);
-			childSetValue(gName, color_ctrl->g/2);
-			childSetValue(bName, color_ctrl->b/2);
-		}
-		else
-		{
-			// set the sliders to the new vals
-			childSetValue(rName, color_ctrl->r);
-			childSetValue(gName, color_ctrl->g);
-			childSetValue(bName, color_ctrl->b);
-		}
-	}
-
-	// now update the current parameters and send them to shaders
-	color_ctrl->update(LLWLParamManager::getInstance()->mCurParams);
-	LLWLParamManager::getInstance()->propagateParameters();
-}
-
 /// GLOW SPECIFIC CODE
 void LLFloaterEditSky::onGlowRMoved(LLUICtrl* ctrl, void* userdata)
 {
diff --git a/indra/newview/llfloatereditsky.h b/indra/newview/llfloatereditsky.h
index 0ad4217a435b90351d64880c509f26eaadc307d0..ff31476ee0b976d5a8d29f738ebde219eea94756 100644
--- a/indra/newview/llfloatereditsky.h
+++ b/indra/newview/llfloatereditsky.h
@@ -57,11 +57,13 @@ class LLFloaterEditSky : public LLFloater
 
 	void syncControls(); /// sync up sliders with parameters
 
+	void setColorSwatch(const std::string& name, const WLColorControl& from_ctrl, F32 k);
+
 	// general purpose callbacks for dealing with color controllers
+	void onColorControlMoved(LLUICtrl* ctrl, WLColorControl* color_ctrl);
 	void onColorControlRMoved(LLUICtrl* ctrl, void* userdata);
 	void onColorControlGMoved(LLUICtrl* ctrl, void* userdata);
 	void onColorControlBMoved(LLUICtrl* ctrl, void* userdata);
-	void onColorControlIMoved(LLUICtrl* ctrl, void* userdata);
 	void onFloatControlMoved(LLUICtrl* ctrl, void* userdata);
 
 	// lighting callbacks for glow
diff --git a/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml
index 64fbaf6b996b9915599284dadc032b227eb962b8..0ea32f61b88cf6ba9e3145865a09cfd779d6bfef 100644
--- a/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml
+++ b/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml
@@ -120,58 +120,16 @@
          width="200">
            Blue Horizon
         </text>
-        <slider
-         control_name="WLBlueHorizonR"
-         decimal_digits="2"
+        <color_swatch
+         can_apply_immediately="true"
          follows="left|top"
-         height="10"
-         increment="0.01"
-         initial_value="0.7"
-         label="R"
+         height="37"
+         label_height="0"
          layout="topleft"
          left_delta="0"
+         name="WLBlueHorizon"
          top_pad="6"
-         name="WLBlueHorizonR"
-         width="200" />
-        <slider
-         control_name="WLBlueHorizonG"
-         decimal_digits="2"
-         follows="left|top"
-         height="10"
-         increment="0.01"
-         initial_value="0.7"
-         label="G"
-         layout="topleft"
-         left_delta="0"
-         name="WLBlueHorizonG"
-         top_pad="6"
-         width="200" />
-        <slider
-         control_name="WLBlueHorizonB"
-         decimal_digits="2"
-         follows="left|top"
-         height="10"
-         increment="0.01"
-         initial_value="0.7"
-         label="B"
-         layout="topleft"
-         name="WLBlueHorizonB"
-         left_delta="0"
-         top_pad="6"
-         width="200" />
-        <slider
-         control_name="WLBlueHorizonI"
-         decimal_digits="2"
-         follows="left|top"
-         height="10"
-         increment="0.01"
-         initial_value="1.0"
-         label="I"
-         layout="topleft"
-         name="WLBlueHorizonI"
-         left_delta="0"
-         top_pad="6"
-         width="200" />
+         width="60" />
         <text
          type="string"
          length="1"
@@ -193,7 +151,7 @@
          increment="0.01"
          initial_value="0.25"
          layout="topleft"
-         left_delta="15"
+         left_delta="0"
          top_pad="6"
          name="WLHazeHorizon"
          width="200" />
@@ -213,58 +171,16 @@
          width="200">
             Blue Density
         </text>
-        <slider
-         control_name="WLBlueDensityR"
-         decimal_digits="2"
-         follows="left|top"
-         height="10"
-         increment="0.01"
-         initial_value="0.7"
-         label="R"
-         layout="topleft"
-         left_delta="0"
-         top_pad="6"
-         name="WLBlueDensityR"
-         width="200" />
-        <slider
-         control_name="WLBlueDensityG"
-         decimal_digits="2"
+        <color_swatch
+         can_apply_immediately="true"
          follows="left|top"
-         height="10"
-         increment="0.01"
-         initial_value="0.7"
-         label="G"
+         height="37"
+         label_height="0"
          layout="topleft"
          left_delta="0"
-         name="WLBlueDensityG"
+         name="WLBlueDensity"
          top_pad="6"
-         width="200" />
-        <slider
-         control_name="WLBlueDensityB"
-         decimal_digits="2"
-         follows="left|top"
-         height="10"
-         increment="0.01"
-         initial_value="0.7"
-         label="B"
-         layout="topleft"
-         left_delta="0"
-         name="WLBlueDensityB"
-         top_pad="6"
-         width="200" />
-        <slider
-         control_name="WLBlueDensityI"
-         decimal_digits="2"
-         follows="left|top"
-         height="10"
-         increment="0.01"
-         initial_value="1"
-         label="I"
-         layout="topleft"
-         left_delta="0"
-         name="WLBlueDensityI"
-         top_pad="6"
-         width="200" />
+         width="60" />
         <text
          type="string"
          length="1"
@@ -286,7 +202,7 @@
          increment="0.01"
          initial_value="0.7"
          layout="topleft"
-         left_delta="-15"
+         left_delta="0"
          max_val="4"
          name="WLHazeDensity"
          top_pad="6"
@@ -401,58 +317,16 @@
              width="200">
                 Sun/Moon Color
             </text>
-            <slider
-             control_name="WLSunlightR"
-             decimal_digits="2"
-             follows="left|top"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             label="R"
-             layout="topleft"
-             left_delta="0"
-             top_pad="6"
-             name="WLSunlightR"
-             width="200" />
-            <slider
-             control_name="WLSunlightG"
-             decimal_digits="2"
-             follows="left|top"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             label="G"
-             layout="topleft"
-             left_delta="0"
-             name="WLSunlightG"
-             top_pad="6"
-             width="200" />
-            <slider
-             control_name="WLSunlightB"
-             decimal_digits="2"
+            <color_swatch
+             can_apply_immediately="true"
              follows="left|top"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             label="B"
+             height="37"
+             label_height="0"
              layout="topleft"
              left_delta="0"
-             name="WLSunlightB"
+             name="WLSunlight"
              top_pad="6"
-             width="200" />
-            <slider
-             control_name="WLSunlightI"
-             decimal_digits="2"
-             follows="left|top"
-             height="10"
-             increment="0.01"
-             initial_value="1.0"
-             layout="topleft"
-             label="I"
-             left_delta="0"
-             name="WLSunlightI"
-             top_pad="6"
-             width="200" />
+             width="60" />
             <text
              type="string"
              length="1"
@@ -502,58 +376,16 @@
              width="200">
                 Ambient
             </text>
-            <slider
-             control_name="WLAmbientR"
-             decimal_digits="2"
-             follows="left|top"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             label="R"
-             layout="topleft"
-             left_delta="0"
-             top_pad="6"
-             name="WLAmbientR"
-             width="200" />
-            <slider
-             control_name="WLAmbientG"
-             decimal_digits="2"
-             follows="left|top"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             label="G"
-             layout="topleft"
-             left_delta="0"
-             name="WLAmbientG"
-             top_pad="6"
-             width="200" />
-            <slider
-             control_name="WLAmbientB"
-             decimal_digits="2"
-             follows="left|top"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             label="B"
-             layout="topleft"
-             left_delta="0"
-             name="WLAmbientB"
-             top_pad="6"
-             width="200" />
-            <slider
-             control_name="WLAmbientI"
-             decimal_digits="2"
+            <color_swatch
+             can_apply_immediately="true"
              follows="left|top"
-             height="10"
-             increment="0.01"
-             initial_value="1"
-             label="I"
+             height="37"
+             label_height="0"
              layout="topleft"
              left_delta="0"
-             name="WLAmbientI"
+             name="WLAmbient"
              top_pad="6"
-             width="200" />
+             width="60" />
             <text
              type="string"
              length="1"
@@ -707,59 +539,16 @@
              width="200">
                 Cloud Color
             </text>
-            <slider
-             control_name="WLCloudColorR"
-             decimal_digits="2"
+            <color_swatch
+             can_apply_immediately="true"
              follows="left|top"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             label="R"
-             layout="topleft"
-             left_delta="0"
-             top_pad="6"
-             name="WLCloudColorR"
-             width="200" />
-            <slider
-             control_name="WLCloudColorG"
-             decimal_digits="2"
-             follows="left|top"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             label="G"
+             height="37"
+             label_height="0"
              layout="topleft"
              left_delta="0"
-             name="WLCloudColorG"
+             name="WLCloudColor"
              top_pad="6"
-             width="200" />
-            <slider
-             control_name="WLCloudColorB"
-             decimal_digits="2"
-             follows="left|top"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             label="B"
-             layout="topleft"
-             left_delta="0"
-             name="WLCloudColorB"
-             top_pad="6"
-             width="200" />
-            <slider
-             control_name="WLCloudColorI"
-             decimal_digits="2"
-             follows="left|top"
-             height="10"
-             increment="0.01"
-             initial_value="1.0"
-             label="I"
-             layout="topleft"
-             left_delta="0"
-             name="WLCloudColorI"
-             top_pad="6"
-             width="200" />
-            
+             width="60" />
             <text
              type="string"
              length="1"