diff --git a/src/ImageSharp/Processing/Processors/Transforms/RotateProcessor.cs b/src/ImageSharp/Processing/Processors/Transforms/RotateProcessor.cs
index 57cca4bf9..69ecf5921 100644
--- a/src/ImageSharp/Processing/Processors/Transforms/RotateProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Transforms/RotateProcessor.cs
@@ -2,6 +2,8 @@
// Licensed under the Apache License, Version 2.0.
using System;
+using System.Numerics;
+
using SixLabors.ImageSharp.Advanced;
using SixLabors.ImageSharp.MetaData.Profiles.Exif;
using SixLabors.ImageSharp.ParallelUtils;
@@ -34,12 +36,18 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms
/// The sampler to perform the rotating operation.
/// The source image size
public RotateProcessor(float degrees, IResampler sampler, Size sourceSize)
- : base(
+ : this(
TransformUtils.CreateRotationMatrixDegrees(degrees, sourceSize),
sampler,
sourceSize)
=> this.Degrees = degrees;
+ // Helper constructor
+ private RotateProcessor(Matrix3x2 rotationMatrix, IResampler sampler, Size sourceSize)
+ : base(rotationMatrix, sampler, TransformUtils.GetTransformedSize(sourceSize, rotationMatrix))
+ {
+ }
+
///
/// Gets the angle of rotation in degrees.
///
diff --git a/src/ImageSharp/Processing/Processors/Transforms/SkewProcessor.cs b/src/ImageSharp/Processing/Processors/Transforms/SkewProcessor.cs
index 4a006a9df..c7b1d7410 100644
--- a/src/ImageSharp/Processing/Processors/Transforms/SkewProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Transforms/SkewProcessor.cs
@@ -1,6 +1,8 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
+using System.Numerics;
+
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;
@@ -32,7 +34,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms
/// The sampler to perform the skew operation.
/// The source image size
public SkewProcessor(float degreesX, float degreesY, IResampler sampler, Size sourceSize)
- : base(
+ : this(
TransformUtils.CreateSkewMatrixDegrees(degreesX, degreesY, sourceSize),
sampler,
sourceSize)
@@ -41,6 +43,12 @@ namespace SixLabors.ImageSharp.Processing.Processors.Transforms
this.DegreesY = degreesY;
}
+ // Helper constructor:
+ private SkewProcessor(Matrix3x2 skewMatrix, IResampler sampler, Size sourceSize)
+ : base(skewMatrix, sampler, TransformUtils.GetTransformedSize(sourceSize, skewMatrix))
+ {
+ }
+
///
/// Gets the angle of rotation along the x-axis in degrees.
///