public void drawPicture( Graphics2D g )   // Double buffer
  {                                         //  allow re-size
    Dimension d    = getSize();             // Size of curr. image

    if (  ( theAG == null )           ||
        ( d.width  != theAD.width )   ||
        ( d.height != theAD.height ) )
    {                                       // New size
      theAD = d;
      theAI = (BufferedImage) createImage( d.width, d.height );
      theAG = theAI.createGraphics();
      AffineTransform at = new AffineTransform();
      at.setToIdentity();
      at.scale( ((double)d.width)/W, ((double)d.height)/H );
      theAG.transform(at);
    }

    drawActualPicture( theAG );             // Draw Actual Picture
    g.drawImage( theAI, 0, 0, this );       //  Display on screen
  }