diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake
index 180504d2862691fe937a7db6d2811e0d907f5e89..b6f1e06edd08607899a1a0bffffba525b56de91a 100644
--- a/indra/cmake/APR.cmake
+++ b/indra/cmake/APR.cmake
@@ -56,7 +56,7 @@ else (STANDALONE)
 
   if (LINUX)
     if (VIEWER)
-      list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES} uuid)
+      list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES})
     endif (VIEWER)
     list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES} rt)
   endif (LINUX)
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index 9081752287cd6d87a2df4f8fc469fecfbf4458e6..798cf9af14dbe08d03bc2531f529b9f594b0146e 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -241,7 +241,6 @@ elseif(LINUX)
         libstacktrace.so
         libtcmalloc_minimal.so
 	libtcmalloc_minimal.so.0
-        libuuid.so.1
         libssl.so.0.9.7
        )
 
diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake
index 32c4bc81dfc4af75a888e511ba62beb7004a984f..5710360de2169084c1d28e0d5b77d2effbb9df12 100644
--- a/indra/cmake/ViewerMiscLibs.cmake
+++ b/indra/cmake/ViewerMiscLibs.cmake
@@ -2,7 +2,6 @@
 include(Prebuilt)
 
 if (NOT STANDALONE)
-  use_prebuilt_binary(libuuid)
   use_prebuilt_binary(vivox)
   use_prebuilt_binary(fontconfig)
 endif(NOT STANDALONE)
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index b9b94488cfd2de4169e29edc2ab95002a4ee7502..920bdef7f677e6c0333753020827d08d12839b83 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -450,7 +450,8 @@ void LLFloaterTools::refresh()
 	if (sShowObjectCost)
 	{
 		std::string prim_cost_string;
-		LLResMgr::getInstance()->getIntegerString(prim_cost_string, calcRenderCost());
+		S32 cost = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectRenderCost();
+		LLResMgr::getInstance()->getIntegerString(prim_cost_string, cost);
 		getChild<LLUICtrl>("RenderingCost")->setTextArg("[COUNT]", prim_cost_string);
 	}
 
@@ -1000,38 +1001,6 @@ void LLFloaterTools::onClickGridOptions()
 	//floaterp->addDependentFloater(LLFloaterBuildOptions::getInstance(), FALSE);
 }
 
-S32 LLFloaterTools::calcRenderCost()
-{
-	S32 cost = 0;
-	LLVOVolume::texture_cost_t textures;
-
-	for (LLObjectSelection::iterator selection_iter = LLSelectMgr::getInstance()->getSelection()->begin();
-		  selection_iter != LLSelectMgr::getInstance()->getSelection()->end();
-		  ++selection_iter)
-	{
-		LLSelectNode *select_node = *selection_iter;
-		if (select_node)
-		{
-			LLViewerObject *vobj = select_node->getObject();
-			if (vobj->getVolume())
-			{
-				LLVOVolume* volume = (LLVOVolume*) vobj;
-
-				cost += volume->getRenderCost(textures);
-				for (LLVOVolume::texture_cost_t::iterator iter = textures.begin(); iter != textures.end(); ++iter)
-				{
-					// add the cost of each individual texture in the linkset
-					cost += iter->second;
-				}
-				textures.clear();
-			}
-		}
-	}
-
-
-	return cost;
-}
-
 // static
 void LLFloaterTools::setEditTool(void* tool_pointer)
 {
diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h
index 87c3d2ab47c71c39c48bcdcc38fedd35655f1233..d5595445e0311db3cbaf47a426c972376afdf32e 100644
--- a/indra/newview/llfloatertools.h
+++ b/indra/newview/llfloatertools.h
@@ -114,7 +114,6 @@ class LLFloaterTools
 	static bool multipleFacesSelectedConfirm(const LLSD& notification, const LLSD& response);
 	static void setObjectType( LLPCode pcode );
 	void onClickGridOptions();
-	S32 calcRenderCost();
 
 public:
 	LLButton		*mBtnFocus;
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 728694117c83670bad79873f3d89ff8603b32ada..eb1ca66334db6bc8d566e58cac0746db3c16c7bc 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -6335,6 +6335,33 @@ U32 LLObjectSelection::getSelectedObjectTriangleCount()
 	return count;
 }
 
+S32 LLObjectSelection::getSelectedObjectRenderCost()
+{
+       S32 cost = 0;
+       LLVOVolume::texture_cost_t textures;
+       for (list_t::iterator iter = mList.begin(); iter != mList.end(); ++iter)
+       {
+               LLSelectNode* node = *iter;
+               LLVOVolume* object = (LLVOVolume*)node->getObject();
+
+               if (object)
+               {
+                       cost += object->getRenderCost(textures);
+               }
+
+               for (LLVOVolume::texture_cost_t::iterator iter = textures.begin(); iter != textures.end(); ++iter)
+               {
+                       // add the cost of each individual texture in the linkset
+                       cost += iter->second;
+                       llinfos << "adding texture cost of: " << iter->second << llendl;
+               }
+               textures.clear();
+       }
+
+
+       return cost;
+}
+
 
 //-----------------------------------------------------------------------------
 // getTECount()
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index e0f76bd5dd957a5dafc1ae633e7d3d89b72fd1de..0cf582062d540fb9a5e212268355ff79fd5f7cdf 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -284,6 +284,7 @@ class LLObjectSelection : public LLRefCount
 	F32 getSelectedLinksetCost();
 	F32 getSelectedPhysicsCost();
 	F32 getSelectedLinksetPhysicsCost();
+	S32 getSelectedObjectRenderCost();
 	
 	F32 getSelectedObjectStreamingCost();
 	U32 getSelectedObjectTriangleCount();
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index fe11570cf620c484d8991d49b370ece7ef976621..9aebfcba4a472e197758dd8046d5f8d3319d1028 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -2940,15 +2940,18 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const
 	U32 flexi = 0;
 	U32 animtex = 0;
 	U32 particles = 0;
-	U32 scale = 0;
 	U32 bump = 0;
 	U32 planar = 0;
 	U32 cuts = 0;
 	U32 hollow = 0;
-	U32 twist = 0; 
 	U32 circular_profile = 0;
 	U32 circular_path = 0;
 
+	// these multipliers are variable and can be floating point
+	F32 scale = 0.f;
+	F32 twist = 0.f; 
+
+
 	const LLDrawable* drawablep = mDrawable;
 
 	if (isSculpted())
@@ -2992,7 +2995,7 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const
 				LLViewerFetchedTexture *texture = LLViewerTextureManager::getFetchedTexture(sculpt_id);
 				if (texture)
 				{
-					S32 texture_cost = ARC_TEXTURE_COST * (texture->getFullHeight() / 128 + texture->getFullWidth() / 128 + 1);
+					S32 texture_cost = (S32)(ARC_TEXTURE_COST * (texture->getFullHeight() / 128.f + texture->getFullWidth() / 128.f + 1));
 					textures.insert(texture_cost_t::value_type(sculpt_id, texture_cost));
 				}
 			}
@@ -3009,11 +3012,11 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const
 	}
 
 	const LLVector3& sc = getScale();
-	scale += (U32) sc.mV[0] + (U32) sc.mV[1] + (U32) sc.mV[2];
-	if (scale > 4)
+	scale += sc.mV[0] + sc.mV[1] + sc.mV[2];
+	if (scale > 4.f)
 	{
 		// scale is a multiplier, cap it at 4.
-		scale = 4;
+		scale = 4.f;
 	}
 
 	// add points for cut prims
@@ -3033,19 +3036,15 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const
 		hollow = 1;
 	}
 
-	// twist - scale by twist extent / 90
-	if (volume_params.getTwistBegin() != 0.f)
+	F32 twist_mag = path_params.getTwistBegin() - path_params.getTwistEnd();
+	if (twist_mag < 0)
 	{
-		U32 scale = abs((S32)(volume_params.getTwistBegin() / 90.f) + 1);
-		twist += scale;
+		twist_mag *= -1.f;
 	}
 
-	// twist - scale by twist extent / 90
-	if (volume_params.getTwist() != 0.f)
-	{
-		U32 scale = abs((S32)(volume_params.getTwist() / 90.f) + 1);
-		twist += scale;
-	}
+	// note magnitude of twist is [-1.f, 1.f]. which translates to [-180, 180] degrees.
+	// scale to degrees / 90 by multiplying by 2.
+	twist = twist_mag * 2.f;
 
 	// double cost for circular profiles / sculpties
 	if (profile_params.getCurveType() == LL_PCODE_PROFILE_CIRCLE ||
@@ -3079,7 +3078,7 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const
 		{
 			if (textures.find(img->getID()) == textures.end())
 			{
-				S32 texture_cost = ARC_TEXTURE_COST * (img->getFullHeight() / 128 + img->getFullWidth() / 128 + 1);
+				S32 texture_cost = (S32)(ARC_TEXTURE_COST * (img->getFullHeight() / 128.f + img->getFullWidth() / 128.f + 1));
 				textures.insert(texture_cost_t::value_type(img->getID(), texture_cost));
 			}
 		}
@@ -3136,9 +3135,9 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const
 		shame *= hollow * ARC_HOLLOW_MULT;
 	}
 
-	if (twist)
+	if (twist > 1.f)
 	{
-		shame *= twist;
+		shame = (U32)(shame * twist);
 	}
 
 	if (circular_profile)
@@ -3171,33 +3170,15 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const
 		shame *= shiny * ARC_SHINY_MULT;
 	}
 
-	if (scale)
+	if (scale > 1.f)
 	{
-		shame *= scale;
+		shame = (U32)(shame *scale);
 	}
 
 	// add additional costs
 	shame += particles * ARC_PARTICLE_COST;
 
-	LLViewerObject::const_child_list_t& child_list = getChildren();
-	for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin();
-		 iter != child_list.end(); 
-		 ++iter)
-	{
-		const LLViewerObject* child_objectp = *iter;
-		const LLDrawable* child_drawablep = child_objectp->mDrawable;
-		if (child_drawablep)
-		{
-			const LLVOVolume* child_volumep = child_drawablep->getVOVolume();
-			if (child_volumep)
-			{
-				shame += child_volumep->getRenderCost(textures);
-			}
-		}
-	}
-
 	return shame;
-
 }
 
 F32 LLVOVolume::getStreamingCost()
diff --git a/install.xml b/install.xml
index ad3e9a92a2c87ec3fbcca23e00454b8eefabd445..fc374f8c9687ba89550ba589f6fa85e57cb71748 100644
--- a/install.xml
+++ b/install.xml
@@ -1004,25 +1004,6 @@ anguage Infrstructure (CLI) international standard</string>
           </map>
         </map>
       </map>
-      <key>libuuid</key>
-      <map>
-        <key>copyright</key>
-        <string>Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</string>
-        <key>description</key>
-        <string>Generates UUIDs under Linux. Originally a part of the ext2fs filesystem. Also see lluuid.cpp for all platforms. Part of the e2fsprogs package.</string>
-        <key>license</key>
-        <string>lgpl</string>
-        <key>packages</key>
-        <map>
-          <key>linux</key>
-          <map>
-            <key>md5sum</key>
-            <string>91b194aed4b38bc23493b198009a8c6a</string>
-            <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libuuid-linux-20090417.tar.bz2</uri>
-          </map>
-        </map>
-      </map>
       <key>libxml</key>
       <map>
         <key>license</key>