### Godot version

4.1.1

### System information

linux

### Issue description

![image](https://github.com/godotengine/godot-proposals/assets/71937306/04dcf0e9-1c0d-4a7f-8ca9-827dd281253a)

![image](https://github.com/godotengine/godot-proposals/assets/71937306/aa70e31e-0486-455a-b8b4-7e589ec7b754)

notice how the first option in the list is never aligned with the button that spawned it.

### Steps to reproduce

right click in the FileSystem dock and hover over the `Create New →` option.

### Minimal reproduction project

editor
} else if (property == "separator") {
			r_ret = is_item_separator(item_index);
			return true;
		}
	}
	return false;
}
void PopupMenu::_get_property_list(List<PropertyInfo> *p_list) const {
	for (int i = 0; i < items.size(); i++) {
		p_list->push_back(PropertyInfo(Variant::STRING, vformat("item_%d/text", i)));
		PropertyInfo pi = PropertyInfo(Variant::OBJECT, vformat("item_%d/icon", i), PROPERTY_HINT_RESOURCE_TYPE, "Texture2D");
		pi.usage &= ~(get_item_icon(i).is_null() ? PROPERTY_USAGE_STORAGE : 0);
		p_list->push_back(pi);
		pi = PropertyInfo(Variant::INT, vformat("item_%d/checkable", i), PROPERTY_HINT_ENUM, "No,As checkbox,As radio button");
		pi.usage &= ~(!is_item_checkable(i) ? PROPERTY_USAGE_STORAGE : 0);
		p_list->push_back(pi);
		pi = PropertyInfo(Variant::BOOL, vformat("item_%d/checked", i));
		pi.usage &= ~(!is_item_checked(i) ? PROPERTY_USAGE_STORAGE : 0);
		p_list->push_back(pi);
		pi = PropertyInfo(Variant::INT, vformat("item_%d/id", i), PROPERTY_HINT_RANGE, "0,10,1,or_greater");
		p_list->push_back(pi);
		pi = PropertyInfo(Variant::BOOL, vformat("item_%d/disabled", i));
		pi.usage &= ~(!is_item_disabled(i) ? PROPERTY_USAGE_STORAGE : 0);
		p_list->push_back(pi);
		pi = PropertyInfo(Variant::BOOL, vformat("item_%d/separator", i));
		pi.usage &= ~(!is_item_separator(i) ? PROPERTY_USAGE_STORAGE : 0);
		p_list->push_back(pi);
	}
}
void PopupMenu::_bind_methods() {