After a lot of digging around and testing images, I’ve found the specific “bug” causing this, although this does seem like it could also be poor documentation.
I was able to fix it by using an image with the size 256x256.
I’m not sure if this is a bug or intended behavior, as the documentation on the Mouse.Icon and UIS.MouseIcon properties do not state anywhere that the image must be 256x256, and to my best efforts to research this, no devforum post has ever had this solution, which leads me to believe it’s more of a bug rather than poor documentation.
Mouse.Icon Documentation simply states the size of the default icon:
“The default mouse image is 64x64 pixels, with the mouse taking up 17x24 pixels of space.”
UIS.MouseIcon Documentation doesn’t state any sizes at all.
The strange thing is, they will always show up in studio, regardless of what size it is, but the roblox engine doesn’t seem to show any icon larger than 256x256 (although I haven’t tested that extensively since I was just glad to have a cursor that worked).
The bug occurs both with Mouse.Icon and UIS.MouseIcon, with identical behavior (if the decal is over the size of 256x256, it shows in Studio, but not when playing on the Roblox Client).
This was extremely frustrating for the past 2 months, and even though I submitted a bug report, Roblox Staff did not send me this answer, I just got lucky and figured out this is what was causing the image to not appear in game. This leads me to believe that this really isn’t just a case of poor documentation, and is more likely to be an extremely specific bug.
Solution: Take your existing crosshair image that doesn’t work in a published game, use an image resizer to set the size to 256x256, re upload it to roblox, and change the IDs to the new decal.
Hopefully my bug report and this post will do some good by either getting the bug fixed or having the documentation updated with the image size requirement.