diff --git a/Fit/Adapter/MinimizerAdapter.cpp b/Fit/Adapter/MinimizerAdapter.cpp
index c616c0d16b04377f2cbe8fce058311859946c963..badf1ab68f98fb778ca5251eef8cabdc42c9d8f3 100644
--- a/Fit/Adapter/MinimizerAdapter.cpp
+++ b/Fit/Adapter/MinimizerAdapter.cpp
@@ -124,15 +124,11 @@ void MinimizerAdapter::propagateResults(mumufit::Parameters& parameters)
     parameters.setErrors(parErrorsAtMinimum());
     // sets correlation matrix
     if (providesError()) {
-        double2d_t matrix;
-        matrix.resize(fitRank());
-        for (size_t i = 0; i < fitRank(); ++i) {
-            matrix[i].resize(fitRank(), 0.0);
-            for (size_t j = 0; j < fitRank(); ++j)
-                matrix[i][j] = rootMinimizer()->Correlation(static_cast<unsigned int>(i),
-                                                            static_cast<unsigned int>(j));
-        }
-        parameters.setCorrelationMatrix(matrix);
+	auto lambda = [&](size_t i, size_t j) -> double
+	    { return rootMinimizer()->Correlation(static_cast<unsigned int>(i),
+						  static_cast<unsigned int>(j)); };
+	double2d_t matrix = FieldUtil::make<double>(fitRank(), fitRank(), lambda);
+	parameters.setCorrelationMatrix(matrix);
     }
 }
 
diff --git a/Fit/Residual/ResidualFunctionAdapter.cpp b/Fit/Residual/ResidualFunctionAdapter.cpp
index 58cdfbfb03f76fa37aac555f3f15f7502cf3d8da..6f189f30b47ddf5c7e08bd0f213f9c99a45f1c6f 100644
--- a/Fit/Residual/ResidualFunctionAdapter.cpp
+++ b/Fit/Residual/ResidualFunctionAdapter.cpp
@@ -55,10 +55,7 @@ const RootResidualFunction* ResidualFunctionAdapter::rootResidualFunction()
 
 void ResidualFunctionAdapter::calculate_gradients(const std::vector<double>& pars)
 {
-    m_gradients.clear();
-    m_gradients.resize(pars.size());
-    for (size_t i_par = 0; i_par < pars.size(); ++i_par)
-        m_gradients[i_par].resize(m_datasize, 0.0);
+    m_gradients.resize(pars.size(), std::vector<double>(m_datasize));
 
     auto residuals = get_residuals(pars);
     m_number_of_gradient_calls++;
diff --git a/GUI/View/Realspace/RealspaceBuilder.cpp b/GUI/View/Realspace/RealspaceBuilder.cpp
index ed2d4a3038ac9fef655f315ce825782153f2065b..de519cc37c8b28489abc01eefc5bf2b5cee9a383 100644
--- a/GUI/View/Realspace/RealspaceBuilder.cpp
+++ b/GUI/View/Realspace/RealspaceBuilder.cpp
@@ -85,15 +85,9 @@ double visualLayerThickness(const LayerItem& layerItem, const SceneGeometry& sce
 std::unique_ptr<double2d_t> scaledArray(const double2d_t& src, double factor)
 {
     ASSERT(src.size());
-
-    std::unique_ptr<double2d_t> result =
-        std::make_unique<double2d_t>(src.size(), std::vector<double>(src[0].size()));
-
-    for (size_t i = 0; i < src.size(); i++)
-        for (size_t j = 0; j < src[0].size(); j++)
-            (*result)[i][j] = src[i][j] * factor;
-
-    return result;
+    return std::make_unique<double2d_t>(
+        FieldUtil::make<double>(src.size(), src[0].size(),
+                                [&src, factor](size_t i, size_t j) { return src[i][j] * factor; }));
 }
 
 std::unique_ptr<const double2d_t> layerRoughnessMap(const LayerItem& layerItem,