diff --git a/patches/server/Collision-optimisations.patch b/patches/server/Collision-optimisations.patch
index 325607498a..b08003b50d 100644
--- a/patches/server/Collision-optimisations.patch
+++ b/patches/server/Collision-optimisations.patch
@@ -1655,11 +1655,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 +
 +    public static boolean isCollidingWithBorder(final WorldBorder worldborder, final double boxMinX, final double boxMaxX,
 +                                                final double boxMinZ, final double boxMaxZ) {
-+        final double borderMinX = worldborder.getMinX(); // -X
-+        final double borderMaxX = worldborder.getMaxX(); // +X
++        // border size is rounded like the collide voxel shape of the border
++        final double borderMinX = Math.floor(worldborder.getMinX()); // -X
++        final double borderMaxX = Math.ceil(worldborder.getMaxX()); // +X
 +
-+        final double borderMinZ = worldborder.getMinZ(); // -Z
-+        final double borderMaxZ = worldborder.getMaxZ(); // +Z
++        final double borderMinZ = Math.floor(worldborder.getMinZ()); // -Z
++        final double borderMaxZ = Math.ceil(worldborder.getMaxZ()); // +Z
 +
 +        // inverted check for world border enclosing the specified box expanded by -EPSILON
 +        return (borderMinX - boxMinX) > CollisionUtil.COLLISION_EPSILON || (borderMaxX - boxMaxX) < -CollisionUtil.COLLISION_EPSILON ||