diff --git a/autobuild.xml b/autobuild.xml
index 1ea76edd7fa902cc203a8bf8cfc26c5db2152580..599dd1e53b3c288af5e0ae19ba5005e54078f48d 100755
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -1290,9 +1290,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>bda18a1f808eb248d69ff14fa2c69862</string>
+              <string>43826f8f0a5ce5bcdbfed9ea0b6f4ebb</string>
               <key>url</key>
-              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/282464/arch/Linux/installer/llappearanceutility_source-0.1-linux-20131016.tar.bz2</string>
+              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/283022/arch/Linux/installer/llappearanceutility_source-0.1-linux-20131025.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h
index 1c212873f4bb48baeeb6b9a9fb8ab1750a174f74..1e898026c037bd39d41b7616a78ccc14ef5b6ce7 100755
--- a/indra/llappearance/llavatarappearance.h
+++ b/indra/llappearance/llavatarappearance.h
@@ -219,6 +219,12 @@ class LLAvatarAppearance : public LLCharacter
  **                                                                            **
  *******************************************************************************/
 
+	//--------------------------------------------------------------------
+	// Composites
+	//--------------------------------------------------------------------
+public:
+	virtual void	invalidateComposite(LLTexLayerSet* layerset) = 0;
+
 /********************************************************************************
  **                                                                            **
  **                    MESHES
@@ -257,6 +263,7 @@ class LLAvatarAppearance : public LLCharacter
 	//--------------------------------------------------------------------
 public:
 	LLColor4		getGlobalColor(const std::string& color_name ) const;
+	virtual void	onGlobalColorChanged(const LLTexGlobalColor* global_color) = 0;
 protected:
 	LLTexGlobalColor* mTexSkinColor;
 	LLTexGlobalColor* mTexHairColor;
diff --git a/indra/llappearance/lltexglobalcolor.cpp b/indra/llappearance/lltexglobalcolor.cpp
index 0e77b29cced11ede807a68f212215cc19362fb2c..432e2e9f49641ad4706c8a2e0e2967fff42f54aa 100755
--- a/indra/llappearance/lltexglobalcolor.cpp
+++ b/indra/llappearance/lltexglobalcolor.cpp
@@ -103,6 +103,11 @@ LLTexParamGlobalColor::LLTexParamGlobalColor(LLTexGlobalColor* tex_global_color)
 	return new_param;
 }
 
+void LLTexParamGlobalColor::onGlobalColorChanged()
+{
+	mAvatarAppearance->onGlobalColorChanged(mTexGlobalColor);
+}
+
 //-----------------------------------------------------------------------------
 // LLTexGlobalColorInfo
 //-----------------------------------------------------------------------------
diff --git a/indra/llappearance/lltexglobalcolor.h b/indra/llappearance/lltexglobalcolor.h
index 02ba14a9598eff8973622998fe62e9eca8b7d9a4..1b0c91b5cad6e90211405b15c7119cbf7bbfb464 100755
--- a/indra/llappearance/lltexglobalcolor.h
+++ b/indra/llappearance/lltexglobalcolor.h
@@ -74,6 +74,8 @@ class LLTexParamGlobalColor : public LLTexLayerParamColor
 public:
 	LLTexParamGlobalColor(LLTexGlobalColor *tex_color);
 	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable) const;
+protected:
+	/*virtual*/ void onGlobalColorChanged();
 private:
 	LLTexGlobalColor*		mTexGlobalColor;
 };
diff --git a/indra/llappearance/lltexlayerparams.cpp b/indra/llappearance/lltexlayerparams.cpp
index 36147f01e0dcdde5085f249b597e1af8898bfeb7..9608e2d3914ae9d1c95a8f7b1cf31ae279258626 100755
--- a/indra/llappearance/lltexlayerparams.cpp
+++ b/indra/llappearance/lltexlayerparams.cpp
@@ -178,6 +178,7 @@ void LLTexLayerParamAlpha::setWeight(F32 weight)
 		if ((mAvatarAppearance->getSex() & getSex()) &&
 			(mAvatarAppearance->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param.
 		{
+			mAvatarAppearance->invalidateComposite(mTexLayer->getTexLayerSet());
 			mTexLayer->invalidateMorphMasks();
 		}
 	}
@@ -464,6 +465,24 @@ void LLTexLayerParamColor::setWeight(F32 weight)
 	if (cur_u8 != new_u8)
 	{
 		mCurWeight = new_weight;
+
+                const LLTexLayerParamColorInfo *info = (LLTexLayerParamColorInfo *)getInfo();
+
+		if (info->mNumColors <= 0)
+		{
+			// This will happen when we set the default weight the first time.
+			return;
+		}
+
+		if ((mAvatarAppearance->getSex() & getSex()) && (mAvatarAppearance->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param.
+		{
+			onGlobalColorChanged();
+			if (mTexLayer)
+			{
+				mAvatarAppearance->invalidateComposite(mTexLayer->getTexLayerSet());
+			}
+		}
+
 //		llinfos << "param " << mName << " = " << new_weight << llendl;
 	}
 }