diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 8aba2e76a2f3946a81ad31081e7fc5441c8fa375..83761ea18f46b4b5094ea4bb7b95182cc10d4e3e 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -3310,13 +3310,12 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *
 					else
 					{
 						// no cache of this bake. request upload.
-						gAgentAvatarp->requestLayerSetUpload(baked_index);
+						gAgentAvatarp->invalidateComposite(gAgentAvatarp->getLayerSet(baked_index),TRUE);
 					}
 				}
 			}
 		}
 	}
-
 	llinfos << "Received cached texture response for " << num_results << " textures." << llendl;
 	gAgentAvatarp->outputRezTiming("Fetched agent wearables textures from cache. Will now load them");
 
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index bd418ca2b35d3402b0a74ef8781b9a9412715c1b..5c302766c494c30f6b4d8a4bc74052718a6b1e6d 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1447,7 +1447,16 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
 	{
 		gAgentAvatarp->setCompositeUpdatesEnabled(TRUE);
 		gAgentAvatarp->updateVisualParams();
-		gAgentAvatarp->invalidateAll();
+
+		// If we have not yet declouded, we may want to use
+		// baked texture UUIDs sent from the first objectUpdate message
+		// don't overwrite these. If we have already declouded, we've saved
+		// these ids as the last known good textures and can invalidate without
+		// re-clouding.
+		if (!gAgentAvatarp->getIsCloud())
+		{
+			gAgentAvatarp->invalidateAll();
+		}
 	}
 
 	// Start rendering & update the server
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index f73c8b59aa9112c72446a1f39fc5420a1625d0b1..02efda913ed2f7d00e6095968cafb633f90b76a5 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -822,6 +822,8 @@ U32  LLVOAvatarSelf::processUpdateMessage(LLMessageSystem *mesgsys,
 			mInitialBakeIDs[i] = texture_id;
 		}
 
+		onFirstTEMessageReceived();
+
 		mInitialBakesLoaded = true;
 	}