diff --git a/indra/newview/llpolymesh.cpp b/indra/newview/llpolymesh.cpp
index 90e835cda817f28e4a416fb2b4d4d392f6fd15d2..24f84b2ddfa60c464eec51e01a713cddb113846c 100644
--- a/indra/newview/llpolymesh.cpp
+++ b/indra/newview/llpolymesh.cpp
@@ -768,9 +768,9 @@ LLPolyMesh::LLPolyMesh(LLPolyMeshSharedData *shared_data, LLPolyMesh *reference_
 		// Allocate memory without initializing every vector
 		// NOTE: This makes asusmptions about the size of LLVector[234]
 		int nverts = mSharedData->mNumVertices;
-		int nfloats = nverts * (3*5 + 2 + 4);
-		//use 16 byte aligned vertex data to make LLPolyMesh SSE friendly
-		mVertexData = new F32[nfloats];
+		int nfloats = nverts * (2*4 + 3*3 + 2 + 4);
+		//use 16 byte aligned vertex data to make LLPolyMesh SSE friendly
+		mVertexData = (F32*) malloc(nfloats*4);
 		int offset = 0;
 		mCoords				= 	(LLVector4*)(mVertexData + offset); offset += 4*nverts;
 		mNormals			=	(LLVector4*)(mVertexData + offset); offset += 4*nverts;
@@ -799,7 +799,7 @@ LLPolyMesh::~LLPolyMesh()
                 mJointRenderData[i] = NULL;
         }
 
-		delete [] mVertexData;
+		free(mVertexData);
 
 }