public void updatePanelSize() {

    // Set panel size.
    if (stmt != null && stmt.getWidth() > 0 && stmt.getHeight() > 0) {
      int width, height;
      switch (panel.getFitMode()) {
        case FIT_VERTICAL:
          height = getViewport().getHeight();
          width = stmt.getWidth() * height / stmt.getHeight();
          break;

        case FIT_HORIZONTAL:
          width = getViewport().getWidth();
          height = stmt.getHeight() * width / stmt.getWidth();
          break;

        case FIT_BOTH:
          width = getViewport().getWidth();
          height = getViewport().getHeight();
          break;

        case ORIGINAL:
        default:
          width = stmt.getWidth();
          height = stmt.getHeight();
          break;
      }
      panel.setPreferredSize(new Dimension(width, height));
      panel.setSize(new Dimension(width, height));
    }
  }