|  | @@ -10851,8 +10851,9 @@ void uvlo_()
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // save the global state at planning time
 | 
	
		
			
				|  |  | +    bool pos_invalid = XY_NO_RESTORE_FLAG;
 | 
	
		
			
				|  |  |      uint16_t feedrate_bckp;
 | 
	
		
			
				|  |  | -    if (current_block)
 | 
	
		
			
				|  |  | +    if (current_block && !pos_invalid)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          memcpy(saved_target, current_block->gcode_target, sizeof(saved_target));
 | 
	
		
			
				|  |  |          feedrate_bckp = current_block->gcode_feedrate;
 | 
	
	
		
			
				|  | @@ -10930,8 +10931,13 @@ void uvlo_()
 | 
	
		
			
				|  |  |      eeprom_update_word((uint16_t*)(EEPROM_UVLO_Z_MICROSTEPS), z_microsteps);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Store the current position.
 | 
	
		
			
				|  |  | -    eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 0), current_position[X_AXIS]);
 | 
	
		
			
				|  |  | -    eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 4), current_position[Y_AXIS]);
 | 
	
		
			
				|  |  | +    if (pos_invalid)
 | 
	
		
			
				|  |  | +        eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 0), X_COORD_INVALID);
 | 
	
		
			
				|  |  | +    else
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 0), current_position[X_AXIS]);
 | 
	
		
			
				|  |  | +        eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 4), current_position[Y_AXIS]);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Store the current feed rate, temperatures, fan speed and extruder multipliers (flow rates)
 | 
	
		
			
				|  |  |  	eeprom_update_word((uint16_t*)EEPROM_UVLO_FEEDRATE, feedrate_bckp);
 | 
	
	
		
			
				|  | @@ -11282,10 +11288,13 @@ void restore_print_from_eeprom(bool mbl_was_active) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Move to the XY print position in logical coordinates, where the print has been killed, but
 | 
	
		
			
				|  |  |      // without shifting Z along the way. This requires performing the move without mbl.
 | 
	
		
			
				|  |  | -	sprintf_P(cmd, PSTR("G1 X%f Y%f F3000"),
 | 
	
		
			
				|  |  | -              eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 0)),
 | 
	
		
			
				|  |  | -              eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 4)));
 | 
	
		
			
				|  |  | -	enquecommand(cmd);
 | 
	
		
			
				|  |  | +    float pos_x = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 0));
 | 
	
		
			
				|  |  | +    float pos_y = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 4));
 | 
	
		
			
				|  |  | +    if (pos_x != X_COORD_INVALID)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        sprintf_P(cmd, PSTR("G1 X%f Y%f F3000"), pos_x, pos_y);
 | 
	
		
			
				|  |  | +        enquecommand(cmd);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Enable MBL and switch to logical positioning
 | 
	
		
			
				|  |  |      if (mbl_was_active)
 |