diff --git a/Sample/RT/MatrixRTCoefficients.cpp b/Sample/RT/MatrixRTCoefficients.cpp
index cced7f1f1de191ee95762c58338b1be5a3958abf..aeef6194df18ad8d005b7117797d2abc812f112e 100644
--- a/Sample/RT/MatrixRTCoefficients.cpp
+++ b/Sample/RT/MatrixRTCoefficients.cpp
@@ -110,7 +110,7 @@ Eigen::Matrix2cd MatrixRTCoefficients::pMatrixHelper(double sign) const {
     result << alpha + sign * beta * b.z(), sign * beta * (b.x() - I * b.y()),
         sign * beta * (b.x() + I * b.y()), alpha - sign * beta * b.z();
 
-    return result;
+    return m_kz_sign * result;
 }
 
 Eigen::Matrix2cd MatrixRTCoefficients::computeP() const {
@@ -138,7 +138,8 @@ Eigen::Matrix2cd MatrixRTCoefficients::computeDeltaMatrix(double thickness) {
     const complex_t alpha = 0.5 * thickness * (m_lambda(1) + m_lambda(0));
 
     const Eigen::Matrix2cd exp2 = Eigen::DiagonalMatrix<complex_t, 2>(
-        {GetImExponential(thickness * m_lambda(1)), GetImExponential(thickness * m_lambda(0))});
+        {GetImExponential(m_kz_sign * thickness * m_lambda(1)),
+         GetImExponential(m_kz_sign * thickness * m_lambda(0))});
 
     // Compute resulting phase matrix according to exp(i p_m d_m) = exp1 * Q * exp2 * Q.adjoint();
     if (std::abs(m_b.mag() - 1.) < eps) {
@@ -149,7 +150,7 @@ Eigen::Matrix2cd MatrixRTCoefficients::computeDeltaMatrix(double thickness) {
         return Q * exp2 * Q.adjoint() / factor1;
 
     } else if (m_b.mag() < eps)
-        return Eigen::Matrix2cd::Identity() * GetImExponential(alpha);
+        return Eigen::Matrix2cd::Identity() * GetImExponential(m_kz_sign * alpha);
 
     throw std::runtime_error("Broken magnetic field vector");
 }