I have a 3018 that is spot on accurate when testing. I have a pen holder to see my cut out after processing. I run Candle but the same thing happens in UGS. Candle is set for inches. I try to run a 2 inch square DXF but the actual cut (in this case drawing) is about 1 mm square. Anyone that can help will keep me from throwing what to me is now a piece of junk in the dump.
We'd be better able to help out if we knew which board and which firmware you're running, what your settings are, whether the board was shipped originally with the machine, whether it's ever been reflashed, whether the machine has ever been mechanically modified, et cetera. Otherwise, we're just guessing blindly.
What are the first two dozen or so lines of your sample gcode?