diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 142120cb6c6762d7fe92bab5901430d560f243ec..de541add97a80fbf74cbb942bd4ab5c3d1c14007 100755
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -1574,8 +1574,7 @@ BOOL LLAvatarBoneInfo::parseXml(LLXmlTreeNode* node)
 		return FALSE;
 	}
 
-    // BENTO rename leaf->end
-	static LLStdStringHandle end_string = LLXmlTree::addAttributeString("leaf");
+	static LLStdStringHandle end_string = LLXmlTree::addAttributeString("end");
 	if (!node->getFastAttributeVector3(end_string, mEnd))
 	{
 		LL_WARNS() << "Bone without end " << mName << LL_ENDL;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 5fed8ce938e1927373cf7fcfbdc00a189544a4ea..7d38cd116dad8ba6a67d08df6328b5f3e6ce3bf8 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -1362,6 +1362,9 @@ void LLVOAvatar::renderCollisionVolumes()
 
 void LLVOAvatar::renderBones()
 {
+    
+    LLGLEnable blend(GL_BLEND);
+
 	std::ostringstream ostr;
 	std::ostringstream nullstr;
 
@@ -1379,12 +1382,10 @@ void LLVOAvatar::renderBones()
 		ostr << jointp->getName() << ", ";
 
 		jointp->updateWorldMatrix();
-	
+
 		gGL.pushMatrix();
 		gGL.multMatrix( &jointp->getXform()->getWorldMatrix().mMatrix[0][0] );
 
-		gGL.diffuseColor3f( 1.f, 0.f, 1.f );
-	
 		gGL.begin(LLRender::LINES);
 	
 		LLVector3 v[] = 
@@ -1394,6 +1395,19 @@ void LLVOAvatar::renderBones()
         };
         v[1] = jointp->getEnd();
 
+        LLGLDepthTest normal_depth(GL_TRUE);
+
+        // Unoccluded bone portions
+		gGL.diffuseColor3f( 1.f, 1.f, 1.f );
+	
+		gGL.vertex3fv(v[0].mV); 
+		gGL.vertex3fv(v[1].mV);
+
+        LLGLDepthTest depth_under(GL_TRUE, GL_FALSE, GL_GREATER);
+
+        // Unoccluded bone portions
+		gGL.diffuseColor3f( 1.0f, 0.f, 0.0f );
+
 		gGL.vertex3fv(v[0].mV); 
 		gGL.vertex3fv(v[1].mV);