Selections fade rather than immediately change alpha value, rings stay active for a fraction of a second after units garrison. so setIt's a bit distracting m_Color.a here can be overwritten if it happens while a fade is occuring, e.g.once you're aware of it.
Instead of continuing early if the unit's not in the world, if you garrison a hero (set m_Color.a = 0) right after you deselected him (fade from 1 to 0.65we instead first do UpdateVisibility which sets the visibility in Selectable and then continues (since visibility is hidden). The position changed message in Selectable isn't needed anymore (history at #2627).