code: public static AffineTransform createScreenTransform(Rectangle2D userBounds, Rectangle2D screenBounds, boolean keepAspectRatio)
      {
          return createScreenTransform(userBounds, screenBounds, keepAspectRatio, new AffineTransform());
      }
docs: Creates translation that translates userBounds in Cartesian coordinates
  to screenBound in screen coordinates.
  <p>In Cartesian y grows up while in screen y grows down
  @param userBounds
  @param screenBounds
  @param keepAspectRatio
  @return