public static PointDouble Scale(this ScaleFactor sf, PointDouble p) => new PointDouble(sf.Scale(p.X), sf.Scale(p.Y));
public static VectorDouble Scale(this ScaleFactor sf, VectorDouble vec) => new VectorDouble(sf.Scale(vec.X), sf.Scale(vec.Y));
public static RectDouble Scale(this ScaleFactor sf, RectInt32 rect) => new RectDouble(sf.Scale((double)rect.X), sf.Scale((double)rect.Y), sf.Scale((double)rect.Width), sf.Scale((double)rect.Height));
public static SizeDouble Scale(this ScaleFactor sf, SizeInt32 size) => new SizeDouble(sf.Scale((double)size.Width), sf.Scale((double)size.Height));
public static PointDouble Scale(this ScaleFactor sf, PointInt32 p) => new PointDouble(sf.Scale((double)p.X), sf.Scale((double)p.Y));