### 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)

DummyMesh *m = mesh_owner.get_or_null(p_mesh);
		ERR_FAIL_COND_V(!m, 0);
		return m->surfaces.size();
	}
	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 { return AABB(); }
	virtual AABB mesh_get_aabb(RID p_mesh, RID p_skeleton = RID()) override { return AABB(); }
	virtual void mesh_set_shadow_mesh(RID p_mesh, RID p_shadow_mesh) override {}
	virtual void mesh_clear(RID p_mesh) override;
	
	virtual RID mesh_instance_create(RID p_base) override { return RID(); }
	virtual void mesh_instance_free(RID p_rid) override {}
	virtual void mesh_instance_set_skeleton(RID p_mesh_instance, RID p_skeleton) override {}
	virtual void mesh_instance_set_blend_shape_weight(RID p_mesh_instance, int p_shape, float p_weight) override {}
	virtual void mesh_instance_check_for_update(RID p_mesh_instance) override {}
	virtual void update_mesh_instances() override {}
	
	virtual RID multimesh_allocate() override { return RID(); }
	virtual void multimesh_initialize(RID p_rid) override {}
	virtual void multimesh_free(RID p_rid) override {}
	virtual void multimesh_allocate_data(RID p_multimesh, int p_instances, RS::MultimeshTransformFormat p_transform_format, bool p_use_colors = false, bool p_use_custom_data = false) override {}
	virtual int multimesh_get_instance_count(RID p_multimesh) const override { return 0; }
	virtual void multimesh_set_mesh(RID p_multimesh, RID p_mesh) override {}
	virtual void multimesh_instance_set_transform(RID p_multimesh, int p_index, const Transform3D &p_transform) override {}
	virtual void multimesh_instance_set_transform_2d(RID p_multimesh, int p_index, const Transform2D &p_transform) override {}