diff --git a/src/Greenshot.Editor/Drawing/DrawableContainer.cs b/src/Greenshot.Editor/Drawing/DrawableContainer.cs index 9776d995d..08371753b 100644 --- a/src/Greenshot.Editor/Drawing/DrawableContainer.cs +++ b/src/Greenshot.Editor/Drawing/DrawableContainer.cs @@ -396,7 +396,7 @@ namespace Greenshot.Editor.Drawing public bool HasFilters => Filters.Count > 0; - public bool IsAreaHighlightContainer => Filters.Any(f => f is BrightnessFilter) && Filters.Any(f => f is BlurFilter); + public bool IsAreaHighlightContainer => Filters.Any(f => f.Invert && (f is BrightnessFilter || f is BlurFilter || f is GrayscaleFilter)); public abstract void Draw(Graphics graphics, RenderMode renderMode); diff --git a/src/Greenshot.Editor/Drawing/Filters/GrayscaleFilter.cs b/src/Greenshot.Editor/Drawing/Filters/GrayscaleFilter.cs index b382bd1d5..0eeaa76bd 100644 --- a/src/Greenshot.Editor/Drawing/Filters/GrayscaleFilter.cs +++ b/src/Greenshot.Editor/Drawing/Filters/GrayscaleFilter.cs @@ -55,6 +55,10 @@ namespace Greenshot.Editor.Drawing.Filters { graphics.SetClip(applyRect); graphics.ExcludeClip(rect); + foreach (NativeRect area in areasToExcludeFromFilters) + { + graphics.ExcludeClip(area); + } } ColorMatrix grayscaleMatrix = new ColorMatrix(new[]