Re: spending hours
BTW you didn't tell me whether you do have a skinnable color picker among your stock of skinned widgets...
Re: #wallpaper vs. #backgroundTechnically speaking, a #wallpaper is a material of sorts; it is in fact a diffuse-only textured quad made of otherwise default material. The only difference it makes is that its vertices are generated on the fly at run time rather than form part of the static model loaded for rendering.
Re: flaresSimilar to #wallpaper, what you do with your 3D chart bubbles and what we should do with the flare meshes in the model is that we shouldn't have them defined, or shouldn't regard, as literal part of the model. We should generate their quads on the fly and draw them in the orthogonal, rather than modelview, projection.
Theoretically, it's possible to reposition and un-rotate the model and draw its flare(s) independently and then restore the entire model's position and rotation, but that would be one hell of a lot of work to be done, and time, to lose.
It would be much, much more reasonable to just draw the flare quad separately from the model bypassing its vertex array that's already loaded on the GPU because drawing just a quad in the orthogonal projection the way we draw a #wallpaper is way faster than messing with the entire model.
It is easy to un-rotate the flare that's positioned at the model's center. But it's a PITA to unwind and then rewind the model's entire geo for the sake of just one quad of four vertices when the flare is far off of the model center of origin.