diff --git a/viscoelast.cc b/viscoelast.cc
index 2bd917464c6a094fe643da8e5b4d53339c4b924b..0b7752ab061a5a91de1cf97b0cc2e9de0a226281 100644
--- a/viscoelast.cc
+++ b/viscoelast.cc
@@ -87,7 +87,7 @@ int main (int argc, char *argv[]) try {
     typedef UGGrid<dim> GridType;
     typedef BoundaryPatch<GridType::LevelGridView> LevelBoundaryPatch;
 
-    GridType* grid;
+    std::unique_ptr<GridType> grid;
     if (parameterSet.hasKey("parFile")) {
         std::string parFile = parameterSet.get<std::string>("parFile");
         grid = AmiraMeshReader<GridType>::read(path + gridFile, PSurfaceBoundary<dim-1>::read(path + parFile));