There are mistakes in both zoomX and in zoomY.
Current:
zoomX = -Math.floor(relX / $element.width() * (NATIVE_IMG.width * $options.scale) - $options.width / 2);
zoomY = -Math.floor(relY / $element.height() * (NATIVE_IMG.height * $options.scale) - $options.height / 2);
In this mistake state, this is wrong (even in the demo):

While cursor is in the edge of the photo, the lens position has mistake - you can see the cursor position is not on the edge in the zoom, although it was on edge in the photo).
The fix:
zoomX =-6 -Math.floor(relX / $element.width() * (NATIVE_IMG.width * $options.scale) - $options.width / 2);
zoomY =-6 -Math.floor(relY / $element.height() * (NATIVE_IMG.height * $options.scale) - $options.height / 2);
(Just added -6 to each calculation)
Don't really know why tho (LOL) but it works now for every image..
There are mistakes in both
zoomXand inzoomY.Current:
zoomX = -Math.floor(relX / $element.width() * (NATIVE_IMG.width * $options.scale) - $options.width / 2);zoomY = -Math.floor(relY / $element.height() * (NATIVE_IMG.height * $options.scale) - $options.height / 2);In this mistake state, this is wrong (even in the demo):

While cursor is in the edge of the photo, the lens position has mistake - you can see the cursor position is not on the edge in the zoom, although it was on edge in the photo).
The fix:
zoomX =-6 -Math.floor(relX / $element.width() * (NATIVE_IMG.width * $options.scale) - $options.width / 2);zoomY =-6 -Math.floor(relY / $element.height() * (NATIVE_IMG.height * $options.scale) - $options.height / 2);(Just added
-6to each calculation)Don't really know why tho (LOL) but it works now for every image..