title: How to scale about point?
body: <p>I find the following code inside <a href="http://www.piccolo2d.org/doc/piccolo2d.java/release-1.3/core/apidocs/edu/umd/cs/piccolo/util/PAffineTransform.html" rel="nofollow"><code>PAffineTransform</code></a>:</p>
  
  <pre><code>/**
       * Scales the transform about the given point by the given scale.
       * 
       * @param scale to transform the transform by
       * @param x x coordinate around which the scale should take place
       * @param y y coordinate around which the scale should take place
       */
      public void scaleAboutPoint(final double scale, final double x, final double y) {
  
          //TODO strange order
  
          translate(x, y);
          scale(scale, scale);
          translate(-x, -y);
      }
  </code></pre>
  
  <p>Wouldn't it correct to do reverse:</p>
  
  <pre><code>        translate(-x, -y);
          scale(scale, scale);
          translate(x, y);
  </code></pre>
  
  <p>All used methods are the same as in <a href="http://docs.oracle.com/javase/7/docs/api/java/awt/geom/AffineTransform.html" rel="nofollow"><code>AffineTransform</code></a>.</p>
  
  <p><strong>UPDATE</strong></p>
  
  <p>My mistake.</p>
  
  <p>Sequential transform modification means matrix multiplication from the right. So, the last applied modification works first while transforming, because transforming is matrix multiplication from the left.</p>