diff --git a/src/ImageSharp/Processing/Processors/Transforms/TransformUtilities.cs b/src/ImageSharp/Processing/Processors/Transforms/TransformUtilities.cs
index 5c7de1710..b1d7b61ee 100644
--- a/src/ImageSharp/Processing/Processors/Transforms/TransformUtilities.cs
+++ b/src/ImageSharp/Processing/Processors/Transforms/TransformUtilities.cs
@@ -19,7 +19,7 @@ internal static class TransformUtilities
///
/// The transform matrix.
public static bool IsDegenerate(Matrix3x2 matrix)
- => IsNaN(matrix) || IsZero(matrix.GetDeterminant());
+ => IsNaN(matrix) || matrix.GetDeterminant() == 0F;
///
/// Returns a value that indicates whether the specified matrix is degenerate
@@ -28,11 +28,7 @@ internal static class TransformUtilities
///
/// The transform matrix.
public static bool IsDegenerate(Matrix4x4 matrix)
- => IsNaN(matrix) || IsZero(matrix.GetDeterminant());
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- private static bool IsZero(float a)
- => a > -Constants.EpsilonSquared && a < Constants.EpsilonSquared;
+ => IsNaN(matrix) || matrix.GetDeterminant() == 0F;
///
/// Returns a value that indicates whether the specified matrix contains any values
diff --git a/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs b/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs
index 7389c4b89..4214cc5e0 100644
--- a/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs
+++ b/tests/ImageSharp.Tests/Processing/Processors/Transforms/ResizeTests.cs
@@ -699,6 +699,20 @@ public class ResizeTests
appendSourceFileOrDescription: false);
}
+ [Theory]
+ [InlineData(1024)]
+ [InlineData(2048)]
+ public void Issue3156_CanResizeLargeSquareToSinglePixel(int length)
+ {
+ Rgba32 white = Color.White.ToPixel();
+ using Image image = new(length, length, white);
+
+ image.Mutate(x => x.Resize(1, 1));
+
+ Assert.Equal(new Size(1, 1), image.Size);
+ Assert.Equal(white, image[0, 0]);
+ }
+
[Theory]
[WithTestPatternImages(100, 100, PixelTypes.Rgba32)]
public void ResizeUpdatesSubject(TestImageProvider provider)