Hi,
I noticed that Color.Equals() is being used to compare colors in UIWidget and UILabel. This produces garbage because the color (which is a value type) is passed as an argument has to be boxed to an object.
You should be able to use != or == instead which takes a color as an argument and therefore does not create garbage.
Cheers!