Why does this happen and how can it be fixed?
Sub pixel positioning. Since BlitzMAX uses a texel based (or 3D if you wish) coordinate system (as opposed to pixel based) 2,5 is actualy a valid position! Ofcourse since the screen cannot display this position accurately, the 3D hardware is compensating for it by transforming the image.As you have noticed yourself, the "fix" is to use absolute integer positions.