diff --git a/NAPS2.Images.Gtk/GtkImageTransformer.cs b/NAPS2.Images.Gtk/GtkImageTransformer.cs index 4466aa616..108d95460 100644 --- a/NAPS2.Images.Gtk/GtkImageTransformer.cs +++ b/NAPS2.Images.Gtk/GtkImageTransformer.cs @@ -32,10 +32,8 @@ public class GtkImageTransformer : AbstractImageTransformer CairoHelper.SetSourcePixbuf(context, image.Pixbuf, 0, 0); context.Paint(); var newImage = new GtkImage(ImageContext, new Pixbuf(surface, 0, 0, width, height)); - // TODO: In Gdi, we convert this back to BW1. Should we do the same? - newImage.LogicalPixelFormat = image.LogicalPixelFormat == ImagePixelFormat.BW1 - ? ImagePixelFormat.Gray8 - : image.LogicalPixelFormat; + OptimizePixelFormat(image, ref newImage); + newImage.LogicalPixelFormat = image.LogicalPixelFormat; newImage.SetResolution(xres, yres); image.Dispose(); return newImage; diff --git a/NAPS2.Images.Mac/MacImageTransformer.cs b/NAPS2.Images.Mac/MacImageTransformer.cs index c071a1d23..51105da9e 100644 --- a/NAPS2.Images.Mac/MacImageTransformer.cs +++ b/NAPS2.Images.Mac/MacImageTransformer.cs @@ -34,6 +34,7 @@ public class MacImageTransformer : AbstractImageTransformer CGRect rect = new CGRect(0, 0, image.Width, image.Height); using var cgImage = image.Rep.AsCGImage(ref rect, null, null); c.DrawImage(rect, cgImage); + OptimizePixelFormat(image, ref newImage); image.Dispose(); return newImage; } diff --git a/NAPS2.Images/Transforms/AbstractImageTransformer.cs b/NAPS2.Images/Transforms/AbstractImageTransformer.cs index e81c53e3b..b1ddf544b 100644 --- a/NAPS2.Images/Transforms/AbstractImageTransformer.cs +++ b/NAPS2.Images/Transforms/AbstractImageTransformer.cs @@ -266,7 +266,7 @@ public abstract class AbstractImageTransformer where TImage : IMemoryIma /// The result that may be replaced. protected void OptimizePixelFormat(TImage original, ref TImage result) { - if (original.PixelFormat == ImagePixelFormat.BW1) + if (original.UpdateLogicalPixelFormat() == ImagePixelFormat.BW1) { result = PerformTransform(result, new BlackWhiteTransform()); }