diff --git a/Numeric/MetricBasis.cpp b/Numeric/MetricBasis.cpp
index 868361a7435a7d14c6a5d78477f3e5196dd49f2f..86a94a59482de955f2376e8e4a873454abb79554 100644
--- a/Numeric/MetricBasis.cpp
+++ b/Numeric/MetricBasis.cpp
@@ -157,12 +157,16 @@ double MetricBasis::getMinSampledR(MElement *el, int deg) const
   fullMatrix<double> R;
   interpolate(el, md, samplingPoints, R);
 
-  if (R.size1() < 1) return -1;
+  if (R.size1() < 1) {
+    delete md;
+    return -1;
+  }
 
   double min = R(0, 1);
   for (int i = 1; i < R.size1(); ++i)
     min = std::min(min, R(i, 1));
 
+  delete md;
   return min;
 }
 
@@ -891,6 +895,7 @@ void MetricBasis::interpolateAfterNSubdivisions(
 
   interpolate(el, md, subuvw, metric);
   bezierMapping->interpolate(nodes, subuvw, uvw, false);
+  delete md;
 }
 
 int MetricBasis::metricOrder(int tag)