code: public Matrix3x2d scaleAround(double sx, double sy, double ox, double oy, Matrix3x2d dest) {
          double nm20 = m00 * ox + m10 * oy + m20;
          double nm21 = m01 * ox + m11 * oy + m21;
          dest.m00 = m00 * sx;
          dest.m01 = m01 * sx;
          dest.m10 = m10 * sy;
          dest.m11 = m11 * sy;
          dest.m20 = -m00 * ox - m10 * oy + nm20;
          dest.m21 = -m01 * ox - m11 * oy + nm21;
          return dest;
      }
docs: Apply scaling to <code>this</code> matrix by scaling the base axes by the given sx and
  sy factors while using <code>(ox, oy)</code> as the scaling origin, and store the result in <code>dest</code>.
  <p>
  If <code>M</code> is <code>this</code> matrix and <code>S</code> the scaling matrix,
  then the new matrix will be <code>M * S</code>. So when transforming a
  vector <code>v</code> with the new matrix by using <code>M * S * v</code>
  , the scaling will be applied first!
  <p>
  This method is equivalent to calling: <code>translate(ox, oy, dest).scale(sx, sy).translate(-ox, -oy)</code>
  
  @param sx
  the scaling factor of the x component
  @param sy
  the scaling factor of the y component
  @param ox
  the x coordinate of the scaling origin
  @param oy
  the y coordinate of the scaling origin
  @param dest
  will hold the result
  @return dest