public object Convert(object value, Type targetType, object parameter, string language) { SolidColorBrush brush = null; var element = value as FrameworkElement; if (element != null) { while (brush == null && element != null) { DependencyProperty property = GetBackgroundProperty(element); if (property != null) { value = element.GetValue(property); brush = value as SolidColorBrush; if (brush != null && brush.Color == Colors.Transparent) { brush = null; } } element = VisualTreeHelper.GetParent(element) as FrameworkElement; } } brush = value as SolidColorBrush; if (brush != null) { Color color = brush.ToFormsColor(); double delta = Shift; if (color.Luminosity > .6) { delta = -Shift; } color = color.AddLuminosity(delta); return(new SolidColorBrush(color.ToWindowsColor())); } return(null); }