### Godot version

4.0.dev (d0398f62f0)

### System information

Windows 10

### Issue description

`PlaceholderTexture2D::size` property is registered as a `Vector2I`: https://github.com/godotengine/godot/blob/0daa86d70e7338506c37bee6b6e0c4aba7255d68/scene/resources/texture.cpp#L3389  
It should be a `Vector2`, as setter method use a `Vector2` and so parent class getter method.

### Steps to reproduce

N/A

### Minimal reproduction project

N/A
const Color &c = g.get_color_at_offset(ofs);
						wd8[(x + (y * width)) * 4 + 0] = uint8_t(CLAMP(c.r * 255.0, 0, 255));
						wd8[(x + (y * width)) * 4 + 1] = uint8_t(CLAMP(c.g * 255.0, 0, 255));
						wd8[(x + (y * width)) * 4 + 2] = uint8_t(CLAMP(c.b * 255.0, 0, 255));
						wd8[(x + (y * width)) * 4 + 3] = uint8_t(CLAMP(c.a * 255.0, 0, 255));
					}
				}
			}
			image->set_data(width, height, false, Image::FORMAT_RGBA8, data);
		}
	}
	if (texture.is_valid()) {
		RID new_texture = RS::get_singleton()->texture_2d_create(image);
		RS::get_singleton()->texture_replace(texture, new_texture);
	} else {
		texture = RS::get_singleton()->texture_2d_create(image);
	}
	emit_changed();
}
float GradientTexture2D::_get_gradient_offset_at(int x, int y) const {
	if (fill_to == fill_from) {
		return 0;
	}
	float ofs = 0;
	Vector2 pos;
	if (width > 1) {
		pos.x = static_cast<float>(x) / (width - 1);
	}
	if (height > 1) {
		pos.y = static_cast<float>(y) / (height - 1);