diff --git a/indra/llappearance/llwearabledata.cpp b/indra/llappearance/llwearabledata.cpp
old mode 100644
new mode 100755
index d70bbf286a07e5f4eead59a70ef7c0608d2ab27d..401b1dc192219bf471a038fa228c6f947e17ca7c
--- a/indra/llappearance/llwearabledata.cpp
+++ b/indra/llappearance/llwearabledata.cpp
@@ -119,6 +119,11 @@ U32 LLWearableData::pushWearable(const LLWearableType::EType type,
 void LLWearableData::wearableUpdated(LLWearable *wearable, BOOL removed)
 {
 	wearable->setUpdated();
+	// FIXME DRANO avoid updating params via wearables when rendering server-baked appearance.
+	if (mAvatarAppearance->isUsingServerBakes() && !mAvatarAppearance->isUsingLocalAppearance())
+	{
+		return;
+	}
 	if (!removed)
 	{
 		pullCrossWearableValues(wearable->getType());
diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp
index 809b312abe29241a0c7b1153a57792f8d234d5c2..255f61b1b34e3c9f67b2f4dad6037b777b92c2df 100644
--- a/indra/llcharacter/llvisualparam.cpp
+++ b/indra/llcharacter/llvisualparam.cpp
@@ -250,6 +250,7 @@ void LLVisualParam::setAnimationTarget(F32 target_value, BOOL upload_bake)
 	if (mIsDummy)
 	{
 		setWeight(target_value, upload_bake);
+		mTargetWeight = mCurWeight;
 		return;
 	}
 
diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp
index f3d9b2c678d7506f56c520fc28d8b9f87d8dc846..1200f65b6e7881c24b1f4f75ec4db6d2b4eff627 100755
--- a/indra/newview/llviewerwearable.cpp
+++ b/indra/newview/llviewerwearable.cpp
@@ -476,6 +476,10 @@ void LLViewerWearable::setItemID(const LLUUID& item_id)
 
 void LLViewerWearable::revertValues()
 {
+	if (isAgentAvatarValid() && gAgentAvatarp->isUsingServerBakes() && !gAgentAvatarp->isUsingLocalAppearance())
+	{
+		return;
+	}
 	LLWearable::revertValues();
 
 
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 7ca40a8752f4326f9075bed3888f54c8cbfa330f..a29ef2f3ad4c74c84a7c30cb4f4ed501c071d0af 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -668,6 +668,13 @@ BOOL LLVOAvatarSelf::setParamWeight(const LLViewerVisualParam *param, F32 weight
 		return FALSE;
 	}
 
+	// FIXME DRANO - kludgy way to avoid overwriting avatar state from wearables.
+	if (isUsingServerBakes() && !isUsingLocalAppearance())
+	{
+		return FALSE;
+	}
+
+
 	if (param->getCrossWearable())
 	{
 		LLWearableType::EType type = (LLWearableType::EType)param->getWearableType();