<p>I've just changed the motherboard on my Ender 3 Pro with a MKS GEN_L v1.0 and flashed the latest Marlin version on it.</p>
<p>I've calibrated my bed manually using the default XY and Z auto home commands on OctoPrint and a piece of paper.</p>
<p>I'm happy with the calibration, however whenever I launch a print the Z axis moves up from the calibrated position by about 4 mm and starts extruding.</p>
<p>I've checked my Z endstop status with <code>M119</code> and it's triggered at the right calibrated position.</p>
<p>How can I correct this?</p>

If you are already sure that homing is performed correctly and in valid position, then there are few reasons why printer may start printing in unexpected position.
Do the following checks to narrow down the actual one:
steps/mm
: use
```
M503
```
(or
```
M92
```
without parameters) to check if currently configured steps/mm match
your hardware setup
for each axis
offsets:
use
```
M503
```
(or
```
M206
```
without parameters) to check that there are no offsets configured
backoff:
look in
Configuration_adv.h
for following line:
```
```
//#define HOMING_BACKOFF_POST_MM { 2, 2, 2 }  // (mm) Backoff from endstops after homing
```
```
(Having the backoff set is nothing wrong, actually. But be sure to also check final positioning in the generated file.)
slicer's Start G-code:
review slicer configuration, if there is nothing suspicious injected to the print file, which could temporarily overrid printer setup - esepecially
M428
,
M206
,
G92
(set position is normal for E in relative extrusion mode, but suspicious for X,Y,Z)
generated file:
review initial part of generated G-Code file, if there are any similar surprises, and if on initial layer section there is expected move to valid Z position before extrusion is made