diff --git a/Sample/HardParticle/TruncatedSpheroid.cpp b/Sample/HardParticle/TruncatedSpheroid.cpp
index 75247496a2b621de9d8f5119831867c273291509..88c995e49f42cb70abdd9891b7141864c4620f0d 100644
--- a/Sample/HardParticle/TruncatedSpheroid.cpp
+++ b/Sample/HardParticle/TruncatedSpheroid.cpp
@@ -46,15 +46,15 @@ complex_t TruncatedSpheroid::formfactor_at_bottom(C3 q) const
     if (std::abs(q.mag()) <= std::numeric_limits<double>::epsilon())
         return M_PI / 3. / fp * (H * H * (3. * R - H / fp) - m_dh * m_dh * (3. * R - m_dh / fp));
 
-    return M_TWOPI * exp_I(q.z() * (H - fp * R))
+    return M_TWOPI * exp_I(q.z() * (H - fp * R)) * fp
            * ComplexIntegrator().integrate(
                [=](double Z) {
-                   double Rz = std::sqrt(R * R - Z * Z / (fp * fp));
+                   double Rz = std::sqrt(R * R - Z * Z);
                    complex_t qrRz = std::sqrt(q.x() * q.x() + q.y() * q.y()) * Rz;
 
-                   return Rz * Rz * Math::Bessel::J1c(qrRz) * exp_I(q.z() * Z);
+                   return Rz * Rz * Math::Bessel::J1c(qrRz) * exp_I(q.z() * Z * fp);
                },
-               fp * R - H, fp * R - m_dh);
+               R - H / fp, R - m_dh / fp);
 }
 
 std::string TruncatedSpheroid::validate() const