diff --git a/Core/Algorithms/MultiLayerDWBASimulation.cpp b/Core/Algorithms/MultiLayerDWBASimulation.cpp
index a47edfd0f223b7d6ef678bdc14fc3bd75c111f38..95feb092b33ac9aaa9a83f1d8276678284253ac1 100644
--- a/Core/Algorithms/MultiLayerDWBASimulation.cpp
+++ b/Core/Algorithms/MultiLayerDWBASimulation.cpp
@@ -82,6 +82,10 @@ void MultiLayerDWBASimulation::run()
     }
 }
 
+// The normalization of the calculated scattering intensities is:
+// For nanoparticles: rho * (scattering cross-section/scattering particle)
+// For roughness: (scattering cross-section of area S)/S
+// This allows them to be added and normalized together to the beam afterwards
 void MultiLayerDWBASimulation::runProtected()
 {
     msglog(MSG::DEBUG2) << "MultiLayerDWBASimulation::runProtected()";
diff --git a/Core/Algorithms/MultiLayerRoughnessDWBASimulation.cpp b/Core/Algorithms/MultiLayerRoughnessDWBASimulation.cpp
index 3fad7dd82f613d4018ca10a46874d86281f2870e..129f1e24bc55a51a8a92d37fdb1d3a8d70942dd6 100644
--- a/Core/Algorithms/MultiLayerRoughnessDWBASimulation.cpp
+++ b/Core/Algorithms/MultiLayerRoughnessDWBASimulation.cpp
@@ -91,9 +91,9 @@ double MultiLayerRoughnessDWBASimulation::evaluate(const SimulationElement& sim_
         for(size_t j=0; j<mp_multi_layer->getNumberOfLayers()-1; j++){
             for(size_t k=0; k<mp_multi_layer->getNumberOfLayers()-1; k++) {
                 if(j==k) continue;
-                crosscorr += rterm[j]*sterm[j]*rterm[k]*
+                crosscorr += rterm[j]*sterm[j]*
                     mp_multi_layer->getCrossCorrSpectralFun(q,j,k)*
-                    std::conj(sterm[k]);
+                    std::conj(rterm[k])*std::conj(sterm[k]);
             }
         }
     }
@@ -114,18 +114,19 @@ complex_t MultiLayerRoughnessDWBASimulation::get_sum4terms(size_t ilayer,
     double wavelength = sim_element.getWavelength();
     double alpha_i = sim_element.getAlphaI();
     double alpha_f = sim_element.getAlphaMean();
-    kvector_t k_i = sim_element.getKI();
-    kvector_t k_f = sim_element.getMeanKF();
-    complex_t qz1 = k_i.z() + k_f.z();
-    complex_t qz2 = k_i.z() - k_f.z();
-    complex_t qz3 = -k_i.z() + k_f.z();
-    complex_t qz4 = -k_i.z() - k_f.z();
 
     const std::unique_ptr<const ILayerRTCoefficients> P_in_coeff(
         mp_specular_info_vector[ilayer + 1]->getInCoefficients(alpha_i, 0.0, wavelength));
     const std::unique_ptr<const ILayerRTCoefficients> P_out_coeff(
         mp_specular_info_vector[ilayer + 1]->getOutCoefficients(alpha_f, 0.0, wavelength));
 
+    complex_t kiz = P_in_coeff->getScalarKz();
+    complex_t kfz = P_out_coeff->getScalarKz();
+    complex_t qz1 = kiz + kfz;
+    complex_t qz2 = kiz - kfz;
+    complex_t qz3 = -qz2;
+    complex_t qz4 = -qz1;
+
     double sigma(0.0);
     if (const LayerRoughness *roughness
         = mp_multi_layer->getLayerBottomInterface(ilayer)->getRoughness()) {
diff --git a/Core/StandardSamples/MesoCrystalBuilder.cpp b/Core/StandardSamples/MesoCrystalBuilder.cpp
index c33b267153ed46cd8a14d04d68ee468cb1dbfd61..f0fdecde3a1cefb885238fada896e3b0994beacc 100644
--- a/Core/StandardSamples/MesoCrystalBuilder.cpp
+++ b/Core/StandardSamples/MesoCrystalBuilder.cpp
@@ -38,7 +38,7 @@ MesoCrystalBuilder::MesoCrystalBuilder()
 , m_sigma_meso_radius(1.3863e+00*Units::nanometer)
 , m_sigma_lattice_length_a(1.1601e+00*Units::nanometer)
 , m_surface_filling_ratio(1.7286e-01)
-, m_roughness(2.8746e+01*Units::nanometer)
+, m_roughness(12e+00*Units::nanometer)
 , m_nphi_rotations(2)
 {
     init_parameters();
@@ -109,7 +109,7 @@ ISample* MesoCrystalBuilder::buildSample() const
                                     n_particle_adapted, &ff_meso) );
             P_meso->setPosition(0.0, 0.0, -m_meso_height);
 //            particle_layout.addParticle(*P_meso, z_rotation);
-            particle_layout.addParticle(*P_meso, 1.0, kvector_t(0,0,0), z_rotation);
+            particle_layout.addParticle(*P_meso, 1.0, kvector_t(0.0, 0.0, 0.0), z_rotation);
         }
     }
 
diff --git a/Tests/ReferenceData/BornAgain/mesocrystal01_reference.int.gz b/Tests/ReferenceData/BornAgain/mesocrystal01_reference.int.gz
index df5bd1e074a0484bd517390febfd565277acc6d1..9153e0643aa9200cabc0d3e501fae6bdd670fbb3 100644
Binary files a/Tests/ReferenceData/BornAgain/mesocrystal01_reference.int.gz and b/Tests/ReferenceData/BornAgain/mesocrystal01_reference.int.gz differ
diff --git a/Tests/ReferenceData/BornAgain/ref_MesoCrystal.int.gz b/Tests/ReferenceData/BornAgain/ref_MesoCrystal.int.gz
index 8b652535207a579ec9d4e916a9d214938f927226..f0faf5a0ed2879d3eeb855440474ac5d9c882b33 100644
Binary files a/Tests/ReferenceData/BornAgain/ref_MesoCrystal.int.gz and b/Tests/ReferenceData/BornAgain/ref_MesoCrystal.int.gz differ
diff --git a/Tests/ReferenceData/BornAgain/ref_MultiLayerWithRoughness.int.gz b/Tests/ReferenceData/BornAgain/ref_MultiLayerWithRoughness.int.gz
index c89c9b634fc744a470bb39bb78894990b75cc7a5..33389c83c7cdb1edad8a1a06e02f3caee1aab219 100644
Binary files a/Tests/ReferenceData/BornAgain/ref_MultiLayerWithRoughness.int.gz and b/Tests/ReferenceData/BornAgain/ref_MultiLayerWithRoughness.int.gz differ
diff --git a/Tests/ReferenceData/BornAgain/roughness01_reference.int.gz b/Tests/ReferenceData/BornAgain/roughness01_reference.int.gz
index ab8a2f46ba6f9601af6e20f78e2709a987febb6e..331d4ac926d59da6339a371593f293fe9527878f 100644
Binary files a/Tests/ReferenceData/BornAgain/roughness01_reference.int.gz and b/Tests/ReferenceData/BornAgain/roughness01_reference.int.gz differ