Hello! Good work on your build. If you're using the standard polargraph_server_a1 firmware, then your machine will be using an interleaved step style which effectively doubles the number of steps on your motor.
const int stepType = INTERLEAVE;
Your motors have 200 steps per rev motors, so you need to set your stepsPerRev in your controller to 400. Step multiplier is 1, that bits right.
If this is set wrong though, then your drawing will be half the size of what you expect, and you didn't mention the overall size being wrong, rather than just a bit distorted. I'm confused about that.
You've checked your size lots of times, have you checked your mmPerRev distance? So that's the length of cord that wraps around the driving sprocket.
If that's all done right, then the last thing that is usually wrong is the home point.
The drawing tapers as the pen moves down the page, and has a concave bottom row.
Usually: The pen is actually slightly higher up the page than the machine thinks it is / The strings are slightly shorter than the machine thinks they are.
Maybe your home point is physically higher than you have told the controller, or the pen was actually higher than the home point when it was calibrated.
Less commonly: Bad specification. The pen is in the right place, but the machine is physically narrower than it thinks it is.
So the machine thinks the distance to the home point is 800mm (for instance), but it's actually only 750mm.
Solution: Measure, fix, re-upload machine spec!
Do a bit of diagnosis by doing set home then physically moving the pen 10mm down, and see if that makes the distortion better or worse. Select an area in the controller and do Draw outline selected to quickly sketch out a rectangle for testing.