public static Rectangle TransformForSize(this Rectangle rectangle, Size size, Size baseSize, Offsets offsets) { var(fx, fy) = size.ApplyOffsets(offsets).GetTransformKoefs(baseSize.ApplyOffsets(offsets)); var rect = rectangle.ApplyOffsets(offsets); var x1 = ToInt(rect.X * fx); var y1 = ToInt(rect.Y * fy); var x2 = ToInt((rect.X + rectangle.Width) * fx); var y2 = ToInt((rect.Y + rectangle.Height) * fy); return(new Rectangle(x1, y1, x2 - x1, y2 - y1).ReturnOffsets(offsets)); }