better update colors on preference change (not perfect)