Someone recently showed a picture of their 3d printed 25mm calibration cube. Unfortunately for them, however, it was not a cube at all. It was a 25mm x 12.5mm x 20mm shape.
When digging into the problem a little bit, it turns out that they had changed some stepper motors and firmware and accepted all of the default values. If the firmware has not been specifically written for your printer, the default values are most likely wrong. Same thing for the stepper motors. If you replace stepper motors, make sure that your X, Y, and Z steps are correct. Using Marlin based firmware, you can set your X, Y, Z and E steps in the firmware before flashing or you can use the M92 command to update. Using Klipper firmware, you must set your rotation distance.