diff --git a/mbtrack2/tracking/particles.py b/mbtrack2/tracking/particles.py
index cc9e91eddb4f2e367e5ff269d91d10b8b9e766c9..a5b5276070893e6ca295982a1c25cdd0313d3567 100644
--- a/mbtrack2/tracking/particles.py
+++ b/mbtrack2/tracking/particles.py
@@ -318,12 +318,14 @@ class Bunch:
         """
         xb = self['x'] - self['delta'] * self.ring.optics.local_dispersion[0]
         yy = self['y'] - self['delta'] * self.ring.optics.local_dispersion[2]
+        xpb = self['xp'] - self['delta'] * self.ring.optics.local_dispersion[1]
+        ypb = self['yp'] - self['delta'] * self.ring.optics.local_dispersion[3]
         Jx = (self.ring.optics.local_gamma[0] * xb**2) + \
-              (2*self.ring.optics.local_alpha[0] *xb)*self['xp'] + \
-              (self.ring.optics.local_beta[0] * self['xp']**2)
+              (2*self.ring.optics.local_alpha[0] *xb*xpb) + \
+              (self.ring.optics.local_beta[0] * xpb**2)
         Jy = (self.ring.optics.local_gamma[1] * yb**2) + \
-              (2*self.ring.optics.local_alpha[1] * yb*self['yp']) + \
-              (self.ring.optics.local_beta[1] * self['yp']**2)
+              (2*self.ring.optics.local_alpha[1] * yb*ypb) + \
+              (self.ring.optics.local_beta[1] * ypb**2)
         Js = (self.ring.long_gamma * self['tau']**2) + \
               (2*self.ring.long_alpha * self['tau']*self['delta']) + \
               (self.ring.long_beta * self['delta']**2)