diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 7e779986df5b7140f2a5f05615bccfac0f30cbac..9b5b210bf7297abf99aae621d3287cf97179635a 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -541,11 +541,6 @@ void LLViewerTexture::setBoostLevel(S32 level)
 		if(mBoostLevel != LLViewerTexture::BOOST_NONE)
 		{
 			setNoDelete() ;		
-
-			if(LLViewerTexture::BOOST_AVATAR_BAKED_SELF == mBoostLevel || LLViewerTexture::BOOST_AVATAR_BAKED == mBoostLevel)
-			{
-				mCanResetMaxVirtualSize = false ;
-			}
 		}
 		if(gAuditTexture)
 		{
@@ -596,6 +591,11 @@ void LLViewerTexture::forceImmediateUpdate()
 {
 }
 
+void LLViewerTexture::setResetMaxVirtualSizeFlag(bool flag) 
+{
+	mCanResetMaxVirtualSize = flag ;
+}
+
 void LLViewerTexture::addTextureStats(F32 virtual_size, BOOL needs_gltexture) const 
 {
 	if(needs_gltexture)
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 1bd4cc793d8624e9d6a337a1c387443bbe6bdb2d..361f56e02f48a4830ac42c3cbb34a070626cf453 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -166,6 +166,7 @@ class LLViewerTexture : public LLTexture
 
 	void addTextureStats(F32 virtual_size, BOOL needs_gltexture = TRUE) const;
 	void resetTextureStats();	
+	void setResetMaxVirtualSizeFlag(bool flag) ;
 
 	virtual F32  getMaxVirtualSize() ;
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 1fa953f1577ef99083c2146d7366b59c837bac87..b5faa984eb6454d32fa60643d7094cd7725bf615 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4209,10 +4209,16 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel
 {
 	mMaxPixelArea = llmax(pixel_area, mMaxPixelArea);
 	mMinPixelArea = llmin(pixel_area, mMinPixelArea);
+
 	imagep->resetTextureStats();
+	imagep->setResetMaxVirtualSizeFlag(false) ;
 	imagep->setCanUseHTTP(false) ; //turn off http fetching for baked textures.
 	imagep->addTextureStats(pixel_area / texel_area_ratio);
 	imagep->setBoostLevel(boost_level);
+	if(boost_level == LLViewerTexture::BOOST_AVATAR_BAKED_SELF)
+	{
+		imagep->setAdditionalDecodePriority(1.0f) ;
+	}
 }
 
 //virtual	
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 2722646eff482408328ccd3b6e285f14568c96ec..91a5c50b506e444975ff4911de6d484c550fd415 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2036,8 +2036,13 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe
 			F32 desired_pixels;
 			desired_pixels = llmin(mPixelArea, (F32)getTexImageArea());
 			imagep->setBoostLevel(getAvatarBoostLevel());
+
+			imagep->resetTextureStats();
+			imagep->setResetMaxVirtualSizeFlag(false) ;
 			imagep->addTextureStats( desired_pixels / texel_area_ratio );
+			imagep->setAdditionalDecodePriority(1.0f) ;
 			imagep->forceUpdateBindStats() ;
+			
 			if (imagep->getDiscardLevel() < 0)
 			{
 				mHasGrey = TRUE; // for statistics gathering