diff --git a/MeshLib/MeshEditing/Mesh2MeshPropertyInterpolation.cpp b/MeshLib/MeshEditing/Mesh2MeshPropertyInterpolation.cpp
index 18dadcea09a735040a93df07439e64757a860adf..0c55f83b02259734877c901a23f2250130979d12 100644
--- a/MeshLib/MeshEditing/Mesh2MeshPropertyInterpolation.cpp
+++ b/MeshLib/MeshEditing/Mesh2MeshPropertyInterpolation.cpp
@@ -153,13 +153,26 @@ void Mesh2MeshPropertyInterpolation::interpolateElementPropertiesToNodePropertie
     if (!materialIds)
         return;
 
+    // fetch the source of property values
+    boost::optional<MeshLib::PropertyVector<double> const&> opt_src_props(
+        _src_mesh->getProperties().getPropertyVector<double>(_property_name));
+    if (!opt_src_props)
+    {
+        WARN("Did not find PropertyVector<double> \"%s\".",
+             _property_name.c_str());
+        return;
+    }
+
+    MeshLib::PropertyVector<double> const& elem_props(opt_src_props.get());
     std::vector<MeshLib::Node*> const& src_nodes(_src_mesh->getNodes());
     const std::size_t n_src_nodes(src_nodes.size());
-    for (std::size_t k(0); k<n_src_nodes; k++) {
-        const std::size_t n_con_elems (src_nodes[k]->getNumberOfElements());
-        interpolated_node_properties[k] = (*_src_properties)[(*materialIds)[src_nodes[k]->getElement(0)->getID()]];
-        for (std::size_t j(1); j<n_con_elems; j++) {
-            interpolated_node_properties[k] += (*_src_properties)[(*materialIds)[src_nodes[k]->getElement(j)->getID()]];
+    for (std::size_t k(0); k < n_src_nodes; k++)
+    {
+        const std::size_t n_con_elems(src_nodes[k]->getNumberOfElements());
+        interpolated_properties[k] = elem_props[(src_nodes[k]->getElement(0))->getID()];
+        for (std::size_t j(1); j < n_con_elems; j++)
+        {
+            interpolated_properties[k] += elem_props[(src_nodes[k]->getElement(j))->getID()];
         }
         interpolated_node_properties[k] /= n_con_elems;
     }