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

virtual RID skeleton_allocate() override;
	virtual void skeleton_initialize(RID p_skeleton) override;
	virtual void skeleton_free(RID p_rid) override;
	virtual void skeleton_allocate_data(RID p_skeleton, int p_bones, bool p_2d_skeleton = false) override;
	virtual void skeleton_set_base_transform_2d(RID p_skeleton, const Transform2D &p_base_transform) override;
	virtual int skeleton_get_bone_count(RID p_skeleton) const override;
	virtual void skeleton_bone_set_transform(RID p_skeleton, int p_bone, const Transform3D &p_transform) override;
	virtual Transform3D skeleton_bone_get_transform(RID p_skeleton, int p_bone) const override;
	virtual void skeleton_bone_set_transform_2d(RID p_skeleton, int p_bone, const Transform2D &p_transform) override;
	virtual Transform2D skeleton_bone_get_transform_2d(RID p_skeleton, int p_bone) const override;
	virtual void skeleton_update_dependency(RID p_skeleton, DependencyTracker *p_instance) override;
	void _update_dirty_skeletons();
	_FORCE_INLINE_ bool skeleton_is_valid(RID p_skeleton) {