diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index fd7b8469283366a4b5760a39a6b75d0dee311626..6a7cec3bada18eec7f9c2997e16583134aa5c82f 100755
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -2209,39 +2209,11 @@ void LLVertexBuffer::bindForFeedback(U32 channel, U32 type, U32 index, U32 count
 #endif
 }
 
-void DumpComponents(U32 mask)
-{
-	llinfos <<
-	((mask & LLVertexBuffer::MAP_VERTEX)		? "vertex:"		: " ") <<
-	((mask & LLVertexBuffer::MAP_NORMAL)		? "norms:"		: " ") <<
-	((mask & LLVertexBuffer::MAP_TEXCOORD0)	? "TC0:"		: " ") <<
-	((mask & LLVertexBuffer::MAP_TEXCOORD1)	? "TC1:"		: " ") <<
-	((mask & LLVertexBuffer::MAP_TEXCOORD2)	? "TC2:"		: " ") <<
-	((mask & LLVertexBuffer::MAP_TEXCOORD3)	? "TC3:"		: " ") <<
-	((mask & LLVertexBuffer::MAP_COLOR)		? "color:"		: " ") <<
-	((mask & LLVertexBuffer::MAP_EMISSIVE)	? "emissive:"	: " ") <<
-	((mask & LLVertexBuffer::MAP_TANGENT)	? "tangents"	: " ") << llendl;
-}
-
 // Set for rendering
 void LLVertexBuffer::setBuffer(U32 data_mask)
 {
 	flush();
 
-	if((getTypeMask() & data_mask) != data_mask)
-	{
-		if (gDebugGL)
-		{			
-			// Dump info about what was missing
-			//
-			DumpComponents(data_mask & ~getTypeMask());
-			llwarns << "Missing VB stream components. ^^" << llendl;
-		}
-		// Make sure we don't write checks we can't cash below...
-		//
-		data_mask = (data_mask & getTypeMask());
-	}
-	
 	//set up pointers if the data mask is different ...
 	bool setup = (sLastMask != data_mask);
 
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index 500fad4f78689e003f77abace566c3d57a4ac6da..e4ebfea665f72de79bf567e14d389aa5426049be 100755
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -399,7 +399,7 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask, S32 pass)
 				// Fix for bug - NORSPEC-271
 				// If the face is more than 90% transparent, then don't update the Depth buffer for Dof
 				// We don't want the nearly invisible objects to cause of DoF effects
-				if(pass == 1)
+				if(pass == 1 && !LLPipeline::sImpostorRender)
 				{
 					LLFace*	face = params.mFace;
 					if(face)
@@ -577,7 +577,6 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask, S32 pass)
 				
 				// If this alpha mesh has glow, then draw it a second time to add the destination-alpha (=glow).  Interleaving these state-changing calls could be expensive, but glow must be drawn Z-sorted with alpha.
 				if (current_shader && 
-                    !LLPipeline::sImpostorRender &&
 					draw_glow_for_this_partition &&
 					params.mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_EMISSIVE))
 				{
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index 120920a4b02c697d15a1e213f8fd15ee0a3d38cc..66bbc6819b4fe6737bcebcb362ae41e01757229f 100755
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -136,6 +136,16 @@ void LLDrawPoolAvatar::prerender()
 	{
 		sBufferUsage = GL_STREAM_DRAW_ARB;
 	}
+
+	if (!mDrawFace.empty())
+	{
+		const LLFace *facep = mDrawFace[0];
+		if (facep && facep->getDrawable())
+		{
+			LLVOAvatar* avatarp = (LLVOAvatar *)facep->getDrawable()->getVObj().get();
+			updateRiggedVertexBuffers(avatarp);
+		}
+	}
 }
 
 LLMatrix4& LLDrawPoolAvatar::getModelView()
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 33b26494de9f5bf8d0e77098c8ff44a2d4cc39cb..6b3611b7965cff12c066f13272f879662729ec22 100755
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -4863,7 +4863,14 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 
 			if (is_rigged)
 			{
+				if (!drawablep->isState(LLDrawable::RIGGED))
+				{
 				drawablep->setState(LLDrawable::RIGGED);
+
+					//first time this is drawable is being marked as rigged,
+					// do another LoD update to use avatar bounding box
+					vobj->updateLOD();
+				}
 			}
 			else
 			{