diff --git a/Core/StandardSamples/MaterialBySLDBuilder.cpp b/Core/StandardSamples/MaterialBySLDBuilder.cpp
index e8cbf33b8ef8d029cd3946c51b363106dea51183..6a7950cdf629db1dabcda85d9c5800bd2bce3ebe 100644
--- a/Core/StandardSamples/MaterialBySLDBuilder.cpp
+++ b/Core/StandardSamples/MaterialBySLDBuilder.cpp
@@ -20,9 +20,9 @@
 
 MaterialBySLDBuilder::MaterialBySLDBuilder()
     : m_number_of_layers(10)
-    , m_si {4.1491e-6, 4.99e+1, 0.171 * Units::barn / 0.1798197} // [nm, nm^{-3}, nm^2]
-    , m_ti {-3.438e-6, 5.67e+1, 6.09 * Units::barn * 1e+4 / 0.1798197} // [nm, nm^{-3}, nm^2]
-    , m_ni {1.03e-5, 9.15e+1, 4.49 * Units::barn / 0.1798197}    // [nm, nm^{-3}, nm^2]
+    , m_si { 2.0704e-06, 2.3726e-11}
+    , m_ti {-1.9493e-06, 9.6013e-06}
+    , m_ni { 9.4245e-06, 1.1423e-09}
     , m_thick_ti(3.0) // nm
     , m_thick_ni(7.0) //nm
 {}
@@ -32,9 +32,9 @@ MultiLayer* MaterialBySLDBuilder::buildSample() const
     std::unique_ptr<MultiLayer> multi_layer(new MultiLayer());
 
     Material vacuum_material = MaterialBySLD();
-    Material substrate_material = MaterialBySLD("Si_substrate", m_si.sld(), m_si.abs_term());
-    Material ni_material = MaterialBySLD("Ni", m_ni.sld(), m_ni.abs_term());
-    Material ti_material = MaterialBySLD("Ti", m_ti.sld(), m_ti.abs_term());
+    Material substrate_material = MaterialBySLD("Si_substrate", m_si.sld_real, m_si.sld_imag);
+    Material ni_material = MaterialBySLD("Ni", m_ni.sld_real, m_ni.sld_imag);
+    Material ti_material = MaterialBySLD("Ti", m_ti.sld_real, m_ti.sld_imag);
 
     Layer vacuum_layer(vacuum_material, 0);
     Layer ni_layer(ni_material, m_thick_ni);
diff --git a/Core/StandardSamples/MaterialBySLDBuilder.h b/Core/StandardSamples/MaterialBySLDBuilder.h
index 236a4ec02e6d8bcf7f2a83fe6864d11d112192f9..1af1c04d7928ea059f31a5443a57a5b6e2e5b57e 100644
--- a/Core/StandardSamples/MaterialBySLDBuilder.h
+++ b/Core/StandardSamples/MaterialBySLDBuilder.h
@@ -30,20 +30,8 @@ public:
 
 protected:
     struct MaterialData {
-        double sld() const
-        {
-            return density * scat_length;
-        }
-
-        //! Returns macroscopic cross-section for 2200 m/s neutrons
-        double abs_term() const
-        {
-            return density * abs_cx;
-        }
-
-        double scat_length; //!< bound coherent scattering length
-        double density;     //!< number density
-        double abs_cx;      //!< absorption cross-section for 2200 m/s neutrons
+        double sld_real; //!< real part of sld in AA^{-2}
+        double sld_imag; //!< imaginary part of sld in AA^{-2}
     };
     size_t m_number_of_layers;
     MaterialData m_si;
diff --git a/Examples/python/fitting/ex09_FitSpecular/FitSpecularBasics.py b/Examples/python/fitting/ex09_FitSpecular/FitSpecularBasics.py
index 2e443d5b0122168d8837c363396d41396128fcd3..99f9aabb1ead188e73c5fe952f810a8902d0a8c3 100644
--- a/Examples/python/fitting/ex09_FitSpecular/FitSpecularBasics.py
+++ b/Examples/python/fitting/ex09_FitSpecular/FitSpecularBasics.py
@@ -15,27 +15,25 @@ from os import path
 wavelength = 1.54 * ba.angstrom
 
 # substrate (Si)
-bc_si = 4.1491 * ba.angstrom * 1e-5  # bound coherent scattering length for Si
+si_sld_real = 2.0704e-06  # \AA^{-2}
 density_si = 0.0499 / ba.angstrom ** 3  # Si atomic number density
 
 # layers' parameters
 n_repetitions = 10
 # Ni
-bc_ni = 10.3 * ba.angstrom * 1e-5
-density_ni = 0.0915 / ba.angstrom ** 3
+ni_sld_real = 9.4245e-06  # \AA^{-2}
 d_ni = 70 * ba.angstrom
 # Ti
-bc_ti = -3.438 * ba.angstrom * 1e-5
-density_ti = 0.0567 / ba.angstrom ** 3
+ti_sld_real = -1.9493e-06  # \AA^{-2}
 d_ti = 30 * ba.angstrom
 
 
 def get_sample():
     # defining materials
     m_air = ba.MaterialBySLD()
-    m_ni = ba.MaterialBySLD("Ni", density_ni * bc_ni, 0.0)
-    m_ti = ba.MaterialBySLD("Ti", density_ti * bc_ti, 0.0)
-    m_substrate = ba.MaterialBySLD("SiSubstrate", density_si * bc_si, 0.0)
+    m_ni = ba.MaterialBySLD("Ni", ni_sld_real, 0.0)
+    m_ti = ba.MaterialBySLD("Ti", ti_sld_real, 0.0)
+    m_substrate = ba.MaterialBySLD("SiSubstrate", si_sld_real, 0.0)
 
     # air layer and substrate form multi layer
     air_layer = ba.Layer(m_air)
diff --git a/Examples/python/simulation/ex06_Reflectometry/BeamAngularDivergence.py b/Examples/python/simulation/ex06_Reflectometry/BeamAngularDivergence.py
index 11050e8fe3f204ed4399334032ad98f03369f8aa..570ef4c41449029464dda48abb9db911cec5b777 100644
--- a/Examples/python/simulation/ex06_Reflectometry/BeamAngularDivergence.py
+++ b/Examples/python/simulation/ex06_Reflectometry/BeamAngularDivergence.py
@@ -21,27 +21,23 @@ n_sig = 3  # number of sigmas to convolve over
 n_points = 25  # number of points to convolve over
 
 # substrate (Si)
-# bound coherent scattering length for Si (nat. ab.)
-bc_si = 4.1491 * ba.angstrom * 1e-5
-density_si = 0.0499 / ba.angstrom ** 3  # Si atomic number density
+si_sld_real = 2.0704e-06  # \AA^{-2}
 # layer parameters
 n_repetitions = 10
 # Ni
-bc_ni = 10.3 * ba.angstrom * 1e-5
-density_ni = 0.0915 / ba.angstrom ** 3
+ni_sld_real = 9.4245e-06  # \AA^{-2}
 d_ni = 70 * ba.angstrom
 # Ti
-bc_ti = -3.438 * ba.angstrom * 1e-5
-density_ti = 0.0567 / ba.angstrom ** 3
+ti_sld_real = -1.9493e-06  # \AA^{-2}
 d_ti = 30 * ba.angstrom
 
 
 def get_sample():
     # defining materials
     m_air = ba.MaterialBySLD("Air", 0.0, 0.0)
-    m_ni = ba.MaterialBySLD("Ni", density_ni * bc_ni, 0.0)
-    m_ti = ba.MaterialBySLD("Ti", density_ti * bc_ti, 0.0)
-    m_substrate = ba.MaterialBySLD("SiSubstrate", density_si * bc_si, 0.0)
+    m_ni = ba.MaterialBySLD("Ni", ni_sld_real, 0.0)
+    m_ti = ba.MaterialBySLD("Ti", ti_sld_real, 0.0)
+    m_substrate = ba.MaterialBySLD("SiSubstrate", si_sld_real, 0.0)
 
     air_layer = ba.Layer(m_air)
     ni_layer = ba.Layer(m_ni, d_ni)
diff --git a/Examples/python/simulation/ex06_Reflectometry/BeamFullDivergence.py b/Examples/python/simulation/ex06_Reflectometry/BeamFullDivergence.py
index 27c4f6b828f91b48b2484a86db52071b6344ec1c..bf423cbf3babeaf0c2fec1d396885edc8912d439 100644
--- a/Examples/python/simulation/ex06_Reflectometry/BeamFullDivergence.py
+++ b/Examples/python/simulation/ex06_Reflectometry/BeamFullDivergence.py
@@ -18,19 +18,15 @@ n_sig = 3  # number of sigmas to convolve over
 n_points = 25  # number of points to convolve over
 
 # substrate (Si)
-# bound coherent scattering length for Si (nat. ab.)
-bc_si = 4.1491 * ba.angstrom * 1e-5
-density_si = 0.0499 / ba.angstrom ** 3  # Si atomic number density
+si_sld_real = 2.0704e-06  # \AA^{-2}
 # layer parameters
 n_repetitions = 10
 # Ni
-bc_ni = 10.3 * ba.angstrom * 1e-5
-density_ni = 0.0915 / ba.angstrom ** 3
-d_ni = 70 * ba.angstrom
+ni_sld_real = 9.4245e-06  # \AA^{-2}
+d_ni = 70 * ba.angstrom  # ni layer thickness (nm)
 # Ti
-bc_ti = -3.438 * ba.angstrom * 1e-5
-density_ti = 0.0567 / ba.angstrom ** 3
-d_ti = 30 * ba.angstrom
+ti_sld_real = -1.9493e-06  # \AA^{-2}
+d_ti = 30 * ba.angstrom  # ti layer thickness (nm)
 
 
 def get_sample():
@@ -38,9 +34,9 @@ def get_sample():
     # this example implies beam divergence in the wavelength,
     # thus MaterialBySLD must be used to provide correct result
     m_air = ba.MaterialBySLD("Air", 0.0, 0.0)
-    m_ni = ba.MaterialBySLD("Ni", density_ni * bc_ni, 0.0)
-    m_ti = ba.MaterialBySLD("Ti", density_ti * bc_ti, 0.0)
-    m_substrate = ba.MaterialBySLD("SiSubstrate", density_si * bc_si, 0.0)
+    m_ni = ba.MaterialBySLD("Ni", ni_sld_real, 0.0)
+    m_ti = ba.MaterialBySLD("Ti", ti_sld_real, 0.0)
+    m_substrate = ba.MaterialBySLD("SiSubstrate", si_sld_real, 0.0)
 
     air_layer = ba.Layer(m_air)
     ni_layer = ba.Layer(m_ni, d_ni)
diff --git a/Tests/ReferenceData/Core/HomogeneousTiNiSampleWithAbsorption.int.gz b/Tests/ReferenceData/Core/HomogeneousTiNiSampleWithAbsorption.int.gz
index f7de47d7f05daa93b2b6ffcf72f875e688f2b293..f7962d37f750bf1a007dac2ab9ec2fa23ea10d5d 100644
Binary files a/Tests/ReferenceData/Core/HomogeneousTiNiSampleWithAbsorption.int.gz and b/Tests/ReferenceData/Core/HomogeneousTiNiSampleWithAbsorption.int.gz differ
diff --git a/Tests/ReferenceData/Python/BeamAngularDivergence.ref.int.gz b/Tests/ReferenceData/Python/BeamAngularDivergence.ref.int.gz
index 6f77cfabd1a8b3c239e98af2d9b5f38e69c8acb9..9c1dda65e49e83fafa315c366fe4afdbaa3725c3 100644
Binary files a/Tests/ReferenceData/Python/BeamAngularDivergence.ref.int.gz and b/Tests/ReferenceData/Python/BeamAngularDivergence.ref.int.gz differ
diff --git a/Tests/ReferenceData/Python/BeamFullDivergence.ref.int.gz b/Tests/ReferenceData/Python/BeamFullDivergence.ref.int.gz
index 28e54ce539bf5a70646759cf6147902442247c57..a74c173951d56d27c2338eb83650bbf843050dd7 100644
Binary files a/Tests/ReferenceData/Python/BeamFullDivergence.ref.int.gz and b/Tests/ReferenceData/Python/BeamFullDivergence.ref.int.gz differ