diff --git a/Applications/DataExplorer/VtkVis/VtkVisPipeline.cpp b/Applications/DataExplorer/VtkVis/VtkVisPipeline.cpp
index bf0dc45d1b9c5f8842c93ec29175ddfc4563ef2c..86982026c00249556968a320c8c4fa7f4346dd7c 100644
--- a/Applications/DataExplorer/VtkVis/VtkVisPipeline.cpp
+++ b/Applications/DataExplorer/VtkVis/VtkVisPipeline.cpp
@@ -176,17 +176,17 @@ void VtkVisPipeline::loadFromFile(QString filename)
 
 	if (filename.size() > 0)
 	{
-		vtkXMLDataReader* reader;
+		vtkSmartPointer<vtkXMLDataReader> reader;
 		if (filename.endsWith("vti"))
-			reader = vtkXMLImageDataReader::New();
+			reader = vtkSmartPointer<vtkXMLImageDataReader>::New();
 		else if (filename.endsWith("vtr"))
-			reader = vtkXMLRectilinearGridReader::New();
+			reader = vtkSmartPointer<vtkXMLRectilinearGridReader>::New();
 		else if (filename.endsWith("vts"))
-			reader = vtkXMLStructuredGridReader::New();
+			reader = vtkSmartPointer<vtkXMLStructuredGridReader>::New();
 		else if (filename.endsWith("vtp"))
-			reader = vtkXMLPolyDataReader::New();
+			reader = vtkSmartPointer<vtkXMLPolyDataReader>::New();
 		else if (filename.endsWith("vtu"))
-			reader = vtkXMLUnstructuredGridReader::New();
+			reader = vtkSmartPointer<vtkXMLUnstructuredGridReader>::New();
 		else if (filename.endsWith("vtk"))
 		{
 			vtkGenericDataObjectReader* oldStyleReader =
@@ -214,7 +214,7 @@ void VtkVisPipeline::loadFromFile(QString filename)
 		//std::cout << "#cell scalars: " << reader->GetNumberOfCellArrays() << std::endl;
 		//std::cout << "#point scalars: " << reader->GetNumberOfPointArrays() << std::endl;
 
-		vtkDataSet* dataSet = reader->GetOutputAsDataSet();
+		vtkSmartPointer<vtkDataSet> dataSet = reader->GetOutputAsDataSet();
 		if (dataSet)
 		{
 			this->listArrays(dataSet);
@@ -222,8 +222,6 @@ void VtkVisPipeline::loadFromFile(QString filename)
 		}
 		else
 			ERR("VtkVisPipeline::loadFromFile(): not a valid vtkDataSet.");
-
-		//reader->Delete();
 	}
 
 #ifndef NDEBUG