ColorFade has some nice uses, but it does not cover some use cases. Most importantly, it does not handle transparency.
IMO, the most flexible way to improve color handling to make items look different according to state, and maintain thematic accuracy in the app avoiding formula contortionism, would be to overload ColorFade with additional optional parameters.
ColorFade would still be useable as-is, with only 2 parameter, but would also have the following optional parameters and usage:
ColorMinimum - Color enumeration or RGBA value. When omitted, ColorFade preserves the current behavior, with FadeAmount values between -1 > and < 0 blending to the default Color.Black - same as RGBA(0,0,0,1).
ColorMaximum - Color enumeration or RGBA value. When omitted, ColorFade preserves the current behavior, with FadeAmount values between 0 > and < 1 blending to the default Color.White - same as RGBA(255,255,255,1).