diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 90da4aa8d0..ae21cb96e9 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2762,7 +2762,11 @@ LayerResult GCodeGenerator::process_layer( if (m_current_instance != next_instance) { m_avoid_crossing_perimeters.use_external_mp_once = true; } - gcode += this->travel_to_first_position(first_point - to_3d(shift, 0), print_z, ExtrusionRole::Mixed, [this]() { + + const double writer_z{m_writer.get_position().z()}; + const double previous_z{writer_z <= std::numeric_limits::epsilon() ? print_z : writer_z}; + + gcode += this->travel_to_first_position(first_point - to_3d(shift, 0), previous_z, ExtrusionRole::Mixed, [this]() { if (m_writer.multiple_extruders) { return std::string{""}; }