We worked on this a while back… it’s dated, but does talk about some of your questions…
I think there’s a bit of a difference between the sprocket contact point between the lower-left corner and the upper-right corner (and same for lower-right and upper-left). Every little bit adds up when you are trying to improve accuracy.
With the model of the M2, I think the only way to overcome this is to modify the gcode to compensate for the errors, and I don’t know of any CAM software that will do this for you.