diff --git a/MeshGeoToolsLib/GeoMapper.cpp b/MeshGeoToolsLib/GeoMapper.cpp
index fd3b4f61091b0037376851a1bb68fe67a7ca260b..3553dba8350f0230a35fdfd66099972f2b86b75e 100644
--- a/MeshGeoToolsLib/GeoMapper.cpp
+++ b/MeshGeoToolsLib/GeoMapper.cpp
@@ -99,9 +99,13 @@ void GeoMapper::mapOnMesh(const MeshLib::Mesh* mesh)
 	// init grid
 	MathLib::Point3d origin(std::array<double,3>{{0,0,0}});
 	MathLib::Vector3 normal(0,0,-1);
-	MeshLib::Mesh const*const flat_mesh =
-		MeshLib::projectMeshOntoPlane(*_surface_mesh, origin, normal);
-	std::vector<MeshLib::Node*> const& flat_nodes (flat_mesh->getNodes());
+	std::vector<MeshLib::Node*> flat_nodes;
+	// copy nodes and project the copied nodes to the x-y-plane, i.e. set
+	// z-coordinate to zero
+	for (auto n_ptr : _surface_mesh->getNodes()) {
+		flat_nodes.push_back(new MeshLib::Node(*n_ptr));
+		(*flat_nodes.back())[2] = 0.0;
+	}
 	_grid = new GeoLib::Grid<MeshLib::Node>(flat_nodes.cbegin(), flat_nodes.cend());
 
 	if (GeoLib::isStation((*pnts)[0])) {
@@ -111,7 +115,8 @@ void GeoMapper::mapOnMesh(const MeshLib::Mesh* mesh)
 	}
 
 	delete _grid;
-	delete flat_mesh;
+	for (auto n_ptr : flat_nodes)
+		delete n_ptr;
 }
 
 void GeoMapper::mapToConstantValue(double value)