diff --git a/Base/Rendering/RenderDelegate/imstkSurfaceMeshRenderDelegate.cpp b/Base/Rendering/RenderDelegate/imstkSurfaceMeshRenderDelegate.cpp
index a96520a2ed9cca0df4444498838feddaf2267018..00b79823ccde3d55ef595fb78a1cdd9c3b6cdd7b 100644
--- a/Base/Rendering/RenderDelegate/imstkSurfaceMeshRenderDelegate.cpp
+++ b/Base/Rendering/RenderDelegate/imstkSurfaceMeshRenderDelegate.cpp
@@ -83,7 +83,7 @@ SurfaceMeshRenderDelegate::SurfaceMeshRenderDelegate(std::shared_ptr<SurfaceMesh
             double tuple[2] = {tcoord[0], tcoord[1]};
             vtkTCoords->InsertNextTuple(tuple);
         }
-        polydata->GetPointData()->AddArray(vtkTCoords);
+        polydata->GetPointData()->SetTCoords(vtkTCoords);
 
         // Read texture image
         auto imgReader = readerFactory->CreateImageReader2(tFileName.c_str());
@@ -106,6 +106,18 @@ SurfaceMeshRenderDelegate::SurfaceMeshRenderDelegate(std::shared_ptr<SurfaceMesh
         unit++;
     }
 
+	// Update normals
+	auto normals = surfaceMesh->getPointDataArray("Normals");
+	auto vtkNormals = vtkSmartPointer<vtkFloatArray>::New();
+	vtkNormals->SetNumberOfComponents(3);
+	vtkNormals->SetName("Normals");
+	for (auto const normal : normals)
+	{
+		double triple[3] = { normal[0], normal[1], normal[2] };
+		vtkNormals->InsertNextTuple(triple);
+	}
+	polydata->GetPointData()->SetNormals(vtkNormals);
+
     // Actor
     m_actor->SetMapper(mapper);