diff --git a/Core/Algorithms/inc/Simulation.h b/Core/Algorithms/inc/Simulation.h
index cd9563e865fea32259c7fd4c41357cf9ebc33155..04eb1fd57923a0ce2c9c7c89ca747d58aa49f3e3 100644
--- a/Core/Algorithms/inc/Simulation.h
+++ b/Core/Algorithms/inc/Simulation.h
@@ -167,6 +167,7 @@ protected:
 
     //! Default implementation only adds the detector axes
     void updateIntensityMapAxes();
+    void updatePolarizationMapAxes();
 
     //! Update the sample by calling the sample builder, if present
     void updateSample();
diff --git a/Core/Algorithms/src/Simulation.cpp b/Core/Algorithms/src/Simulation.cpp
index feca83d63313e435ea2391e19716718c379d9f42..443b646a30faeb3e89edbb9df774ccc0024372f6 100644
--- a/Core/Algorithms/src/Simulation.cpp
+++ b/Core/Algorithms/src/Simulation.cpp
@@ -124,6 +124,9 @@ void Simulation::prepareSimulation()
     gsl_set_error_handler_off();
     m_is_normalized = false;
     updateSample();
+    if(getSample()->containsMagneticMaterial()) {
+        updatePolarizationMapAxes();
+    }
 }
 
 //! Run simulation with possible averaging over parameter distributions
@@ -180,7 +183,11 @@ void Simulation::runOMPISimulation()
 void Simulation::normalize()
 {
     if (!m_is_normalized) {
-        m_instrument.normalize(&m_intensity_map, &m_polarization_output);
+        if(getSample() && getSample()->containsMagneticMaterial()) {
+            m_instrument.normalize(&m_intensity_map, &m_polarization_output);
+        } else {
+            m_instrument.normalize(&m_intensity_map);
+        }
         m_is_normalized = true;
     }
 }
@@ -284,13 +291,20 @@ const DistributionHandler &Simulation::getDistributionHandler() const
 void Simulation::updateIntensityMapAxes()
 {
     m_intensity_map.clear();
-    m_polarization_output.clear();
     size_t detector_dimension = m_instrument.getDetectorDimension();
     for (size_t dim=0; dim<detector_dimension; ++dim) {
         m_intensity_map.addAxis(m_instrument.getDetectorAxis(dim));
+    }
+    m_intensity_map.setAllTo(0.);    
+}
+
+void Simulation::updatePolarizationMapAxes()
+{
+    m_polarization_output.clear();
+    size_t detector_dimension = m_instrument.getDetectorDimension();
+    for (size_t dim=0; dim<detector_dimension; ++dim) {
         m_polarization_output.addAxis(m_instrument.getDetectorAxis(dim));
     }
-    m_intensity_map.setAllTo(0.);
     m_polarization_output.setAllTo(Eigen::Matrix2d::Zero());
 }
 
diff --git a/dev-tools/log/perf_history.txt b/dev-tools/log/perf_history.txt
index 764722d5432c1edb919604a116d88312d9f074ee..091594cec31fdf184425838667fb5cbc151cd9ab 100644
--- a/dev-tools/log/perf_history.txt
+++ b/dev-tools/log/perf_history.txt
@@ -428,3 +428,7 @@
 # After introducing zero pointer for roughness
 | 2015-03-10 14:23:51 | jcnsopc126 | linuxx8664gcc | 0  | 15.987   | 0.352        | 1.709        | 1.059        | 0.468        | 2.192        | 0.264        | 0.522        | 7.944        | 1.478        |
 | 2015-03-10 14:24:10 | jcnsopc126 | linuxx8664gcc | 0  | 16.347   | 0.358        | 1.727        | 1.061        | 0.477        | 2.419        | 0.278        | 0.576        | 7.953        | 1.498        |
+
+# After removal polarized intensity map initialization
+| 2015-03-10 17:00:39 | jcnsopc126 | linuxx8664gcc | 0  | 15.958   | 0.362        | 1.696        | 1.007        | 0.409        | 2.212        | 0.279        | 0.522        | 7.856        | 1.615        |
+| 2015-03-10 17:00:58 | jcnsopc126 | linuxx8664gcc | 0  | 15.996   | 0.358        | 1.667        | 1.009        | 0.412        | 2.253        | 0.274        | 0.525        | 7.881        | 1.617