tl;dr would enable ImageRectSize/ImageRectOffset, Transparency, VertexColor,etc for all types of objects that use images
All of these types of objects that display images have been a nightmare for the ROBLOX staff. They add in ImageLabels and developers want ImageColor just like the VertexColor in meshes – they do that, and then developers want RectOffset/Size for decals/textures. It’s difficult ensuring that just one of them suits the needs of developers – it has to be a serious pain to do it for multiple different objects. However, all of these are all just images. There’s no reason to separate them out for each individual object. It’d be better if ROBLOX ditched the whole notion of the Image, Color3/VertexColor, RectOffset/Size, and whatnot completely.
I’m not sure about the best way of accomplishing this, but I’m thinking an Image object which holds the asset ID of the image, the VertexColor, Transparency, and RectOffset/Size. Image GUI objects, decals/textures, and mesh textures could be supplied either a string asset ID for backwards compatibility or this new Image object. This isn’t unfeasible – ROBLOX already has demonstrated multi-type properties with particles. Size can either be a number or a NumberSequence:
There shouldn’t be a problem doing this for the Image/Texture/etc properties of the existing objects.
Set up like this, images could be adjusted on-the-fly like they are now instead of just static, always-the-same images that have to be manually created in the Game Explorer (one of the first, but quickly dismissed, things that came to mind), and we would have every bit of control over every image in the game without having to separately maintain them.