diff --git a/src/ImageProcessor/Filters/ColorMatrix/ColorMatrixFilter.cs b/src/ImageProcessor/Filters/ColorMatrix/ColorMatrixFilter.cs index d26e59197..d63732751 100644 --- a/src/ImageProcessor/Filters/ColorMatrix/ColorMatrixFilter.cs +++ b/src/ImageProcessor/Filters/ColorMatrix/ColorMatrixFilter.cs @@ -60,15 +60,8 @@ namespace ImageProcessor.Filters color = Color.Expand(color); } - float sr = color.R; - float sg = color.G; - float sb = color.B; - - color.R = (sr * matrix.M11) + (sg * matrix.M21) + (sb * matrix.M31) + matrix.M41; - color.G = (sr * matrix.M12) + (sg * matrix.M22) + (sb * matrix.M32) + matrix.M42; - color.B = (sr * matrix.M13) + (sg * matrix.M23) + (sb * matrix.M33) + matrix.M43; - - return compand ? Color.Compress(color) : color; + Vector3 transformed = Vector3.Transform(color.ToVector3(), matrix); + return compand ? Color.Compress(new Color(transformed, color.A)) : new Color(transformed, color.A); } } } diff --git a/src/ImageProcessor/Numerics/Rectangle.cs b/src/ImageProcessor/Numerics/Rectangle.cs index 7d90af30b..42dcbe566 100644 --- a/src/ImageProcessor/Numerics/Rectangle.cs +++ b/src/ImageProcessor/Numerics/Rectangle.cs @@ -102,12 +102,12 @@ namespace ImageProcessor { get { - return (int)this.backingVector.W; + return (int)this.backingVector.Z; } set { - this.backingVector.W = value; + this.backingVector.Z = value; } } @@ -118,12 +118,12 @@ namespace ImageProcessor { get { - return (int)this.backingVector.Z; + return (int)this.backingVector.W; } set { - this.backingVector.Z = value; + this.backingVector.W = value; } }