diff --git a/Base/Geometry/Reader/imstkVTKMeshReader.cpp b/Base/Geometry/Reader/imstkVTKMeshReader.cpp
index 29e4dbf9cc42ccaaa01245bf40376d3f16f32af3..a8a8e4fc5ac33916ca6750c03ca825dbdcd573fd 100644
--- a/Base/Geometry/Reader/imstkVTKMeshReader.cpp
+++ b/Base/Geometry/Reader/imstkVTKMeshReader.cpp
@@ -158,8 +158,7 @@ VTKMeshReader::convertVtkUnstructuredGridToVolumetricMesh(vtkUnstructuredGrid* v
     std::vector<Vec3d> vertices;
     VTKMeshReader::copyVertices(vtkMesh->GetPoints(), vertices);
 
-    vtkIdType cellType;
-    vtkMesh->GetCellType(cellType);
+    int cellType = vtkMesh->GetCellType(vtkMesh->GetNumberOfCells()-1);
     if( cellType == VTK_TETRA )
     {
         std::vector<TetrahedralMesh::TetraArray> cells;
@@ -219,6 +218,10 @@ VTKMeshReader::copyCells(vtkCellArray* vtkCells, std::vector<std::array<size_t,d
     std::array<size_t, dim> cell;
     while(vtkCells->GetNextCell(vtkCell))
     {
+        if (vtkCell->GetNumberOfIds() != dim)
+        {
+            continue;
+        }
         for(size_t i = 0; i < dim; ++i)
         {
             cell[i] = vtkCell->GetId(i);