It’s very unoptimized so I think your solution is better. I made a ModuleScript to handle the gradient selection (mostly because I copied most of it from UIBlox) which isn’t very ideal when you can incorporate it directly in the SelectionImageObject like you did.
You’re free to use the code and merge it in without my permission.