diff --git a/src/obj/NiSkinPartition.cpp b/src/obj/NiSkinPartition.cpp
index 492fbc17bb5cbbe0ab97760aca51841efac8bc9f..9f188a4a336da3ef5dd6e97c24221f99d69ed221 100644
--- a/src/obj/NiSkinPartition.cpp
+++ b/src/obj/NiSkinPartition.cpp
@@ -642,10 +642,13 @@ void NiSkinPartition::SetTriangles( int partition, const vector<Triangle> & in )
    if ( in.size() > 65535 || in.size() < 0 ) {
       throw runtime_error("Invalid Triangle Count: must be between 0 and 65535.");
    }
+   if ( partition < 0  || partition >= numSkinPartitionBlocks) {
+      throw runtime_error("Invalid partition number.");
+   };
    SkinPartition& part = skinPartitionBlocks[partition];
    part.triangles = in;
    part.hasFaces = (in.size() > 0) ? true : (part.strips.size() != 0);
-   part.numTriangles = (unsigned int)(in.size()) * 3;
+   part.numTriangles = (unsigned short)(in.size());
 }
 
 NiSkinPartition::NiSkinPartition(Ref<NiTriBasedGeom> shape) {