diff --git a/Core/Computation/MainComputation.cpp b/Core/Computation/MainComputation.cpp
index abda87a9ed9a0511c6af35a710dffdb80e1db728..9cb3d542535da957bddd0c804a29c8e3d385e981 100644
--- a/Core/Computation/MainComputation.cpp
+++ b/Core/Computation/MainComputation.cpp
@@ -44,8 +44,8 @@ MainComputation::MainComputation(
     , m_progress(&progress)
     , m_begin_it(begin_it)
     , m_end_it(end_it)
-    , mP_fresnel_map(createFresnelMap(mP_multi_layer.get()))
 {
+    mP_fresnel_map.reset(createFresnelMap());
     bool polarized = mP_multi_layer->containsMagneticMaterial();
     size_t nLayers = mP_multi_layer->numberOfLayers();
     for (size_t i=0; i<nLayers; ++i) {
@@ -97,12 +97,12 @@ void MainComputation::runProtected()
     }
 }
 
-IFresnelMap* MainComputation::createFresnelMap(const MultiLayer* p_multilayer)
+IFresnelMap* MainComputation::createFresnelMap()
 {
-        if (!p_multilayer->requiresMatrixRTCoefficients())
-            return new ScalarFresnelMap(*p_multilayer);
+        if (!mP_multi_layer->requiresMatrixRTCoefficients())
+            return new ScalarFresnelMap(*mP_multi_layer);
         else
-            return new MatrixFresnelMap(*p_multilayer);
+            return new MatrixFresnelMap(*mP_multi_layer);
 }
 
 void MainComputation::adjustFresnelMap()
diff --git a/Core/Computation/MainComputation.h b/Core/Computation/MainComputation.h
index cb42ff7dfc4c7a67014dbda38c6427d515c7f648..5aff04332a3f687a2cb25acff0c3a69e311679f5 100644
--- a/Core/Computation/MainComputation.h
+++ b/Core/Computation/MainComputation.h
@@ -55,7 +55,7 @@ public:
 
 private:
     void runProtected();
-    static IFresnelMap* createFresnelMap(const MultiLayer* p_multilayer);
+    IFresnelMap* createFresnelMap();
     // corrects used materials in the Fresnel map to the average materials
     void adjustFresnelMap();
     bool checkRegions(const std::vector<HomogeneousRegion>& regions) const;