Define coordinates for Z homing
If you enabled Z_SAFE_HOMING, then automatically the printer homes Z at the middle of the build plate, if the bed size dimensions are correctly defined (in your case X_BED_SIZE and X_BED_SIZE should be defined as 300).
In Configuration.h you can find:
#define Z_SAFE_HOMING

#if ENABLED(Z_SAFE_HOMING)
  #define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE) / 2)    // X point for Z homing when homing all axes (G28).
  #define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2)    // Y point for Z homing when homing all axes (G28).
#endif

If Z_SAFE_HOMING was enabled, and the bed properly dimensioned, it could be that the steps/mm are incorrectly defined.
Note that if a probe is used, the offset of the probe to the nozzle center is taken into account, this implies that the probe is moved to the center, not the nozzle. The code responsible for this is found in G28.cpp:
/**
 * Move the Z probe (or just the nozzle) to the safe homing point
 * (Z is already at the right height)
 */
destination.set(safe_homing_xy, current_position.z);

TERN_(HOMING_Z_WITH_PROBE, destination -= probe.offset_xy);

I.e. the ternary operation (TERN_) determines the addition of the probe offset.