Your loading code is obviously incorrect. You save position of a node but while loading you are not setting position of the node but rather its rect or geometry (which is not the same as position). Item's rect corresponds to setting its boundingRect() while item position determines where in the item's parent item (or scene in case it doesn't have a parent item) coordinate system the given item's (0,0) coordinate resides.