### Godot version

4.0.beta10.official

### System information

Pop!_OS 22.04

### Issue description

After assigning a bone to a polygon, if the bone is not at the initial position (0,0), a strange behavior occurs when moving or rotating the bones.

The polygon is translated to incorrect positions (it seems to be based on the center of the original texture and not the polygon itself.

![godot4-09-01-2023 13-32](https://user-images.githubusercontent.com/1427790/211311363-9d33ce77-b1cd-4d0e-b607-3fce9fe35b86.gif)

Trying the exactly same nodes on v3.5.1 behaves correctly.

![godot3-09-01-2023 13-22](https://user-images.githubusercontent.com/1427790/211311637-c7c33a93-3918-4037-b545-6284b046bc97.gif)

There are a similar closed issue for Godot 3:
https://github.com/godotengine/godot/issues/48348


### Steps to reproduce

1. Add a Polygon2D node to the root
2. Assign a texture to the Polygon2D and edit the polygon UV to cut the desired part
3. Move it to a new position
4. Add a Skeleton2D node to the root
5. Add a Bone2D node to the Skeleton2D
6. Assign the Bone2D to the Polygon2D and proper weight to de polygon UV
7. Rotate or move the Bone2D

### Minimal reproduction project

[godot4_bones2d_issue.zip](https://github.com/godotengine/godot/files/10373343/godot4_bones2d_issue.zip)

Skeleton *skeleton_dirty_list = nullptr;
public:
	static MeshStorage *get_singleton();
	MeshStorage();
	virtual ~MeshStorage();
	
	Mesh *get_mesh(RID p_rid) { return mesh_owner.get_or_null(p_rid); };
	bool owns_mesh(RID p_rid) { return mesh_owner.owns(p_rid); };
	virtual RID mesh_allocate() override;
	virtual void mesh_initialize(RID p_rid) override;
	virtual void mesh_free(RID p_rid) override;
	virtual void mesh_set_blend_shape_count(RID p_mesh, int p_blend_shape_count) override;
	virtual bool mesh_needs_instance(RID p_mesh, bool p_has_skeleton) override;
	virtual void mesh_add_surface(RID p_mesh, const RS::SurfaceData &p_surface) override;
	virtual int mesh_get_blend_shape_count(RID p_mesh) const override;
	virtual void mesh_set_blend_shape_mode(RID p_mesh, RS::BlendShapeMode p_mode) override;
	virtual RS::BlendShapeMode mesh_get_blend_shape_mode(RID p_mesh) const override;
	virtual void mesh_surface_update_vertex_region(RID p_mesh, int p_surface, int p_offset, const Vector<uint8_t> &p_data) override;
	virtual void mesh_surface_update_attribute_region(RID p_mesh, int p_surface, int p_offset, const Vector<uint8_t> &p_data) override;
	virtual void mesh_surface_update_skin_region(RID p_mesh, int p_surface, int p_offset, const Vector<uint8_t> &p_data) override;
	virtual void mesh_surface_set_material(RID p_mesh, int p_surface, RID p_material) override;
	virtual RID mesh_surface_get_material(RID p_mesh, int p_surface) const override;
	virtual RS::SurfaceData mesh_get_surface(RID p_mesh, int p_surface) const override;
	virtual int mesh_get_surface_count(RID p_mesh) const override;
	virtual void mesh_set_custom_aabb(RID p_mesh, const AABB &p_aabb) override;
	virtual AABB mesh_get_custom_aabb(RID p_mesh) const override;
	virtual AABB mesh_get_aabb(RID p_mesh, RID p_skeleton = RID()) override;
	virtual void mesh_set_shadow_mesh(RID p_mesh, RID p_shadow_mesh) override;
	virtual void mesh_clear(RID p_mesh) override;
	_FORCE_INLINE_ const RID *mesh_get_surface_count_and_materials(RID p_mesh, uint32_t &r_surface_count) {