### 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
int items_total_height = 0;
	for (int i = 0; i < items.size(); i++) {
		items_total_height += _get_item_height(i) + theme_cache.v_separation;
	}
	
	return items_total_height - theme_cache.v_separation;
}
int PopupMenu::_get_mouse_over(const Point2 &p_over) const {
	if (p_over.x < 0 || p_over.x >= get_size().width) {
		return -1;
	}
	
	Point2 ofs = theme_cache.panel_style->get_offset() + Point2(0, theme_cache.v_separation / 2);
	if (ofs.y > p_over.y) {
		return -1;
	}
	for (int i = 0; i < items.size(); i++) {
		ofs.y += i > 0 ? theme_cache.v_separation : (float)theme_cache.v_separation / 2;
		ofs.y += _get_item_height(i);
		if (p_over.y - control->get_position().y < ofs.y) {
			return i;
		}
	}
	return -1;
}
void PopupMenu::_activate_submenu(int p_over, bool p_by_keyboard) {