diff --git a/Sample/HardParticle/HemiEllipsoid.cpp b/Sample/HardParticle/HemiEllipsoid.cpp
index 1714be15a79c8221e29657a761948eaa0b336288..abbbf47ea6d44511c812c5f2f5496d6b212b0cce 100644
--- a/Sample/HardParticle/HemiEllipsoid.cpp
+++ b/Sample/HardParticle/HemiEllipsoid.cpp
@@ -46,6 +46,7 @@ complex_t HemiEllipsoid::formfactor_at_bottom(C3 q) const
     const double R = m_radius_x;
     const double W = m_radius_y;
     const double H = m_height;
+    const complex_t G = std::sqrt((q.x() * R)*(q.x() * R) +  (q.y() * W) * (q.y() * W));
 
     if (std::abs(q.mag()) <= std::numeric_limits<double>::epsilon())
         return M_TWOPI * R * W * H / 3.;
@@ -59,8 +60,7 @@ complex_t HemiEllipsoid::formfactor_at_bottom(C3 q) const
                    complex_t qxRz = q.x() * Rz;
                    complex_t qyWz = q.y() * Wz;
 
-                   complex_t gamma = std::sqrt((q.x() * R)*(q.x() * R)
-                                               +  (q.y() * W) * (q.y() * W)) * std::sqrt(1.0 - z * z);
+                   complex_t gamma = G * std::sqrt(1.0 - z * z);
                    complex_t J1_gamma_div_gamma = Math::Bessel::J1c(gamma);
 
                    return Rz * Wz * J1_gamma_div_gamma * exp_I(q.z() * H * z);