docs: private void paint(ServletRequest pReq, Graphics2D pRes, int pWidth, int pHeight)
              throws ImageServletException {
  
          // Get parameters
          String text = pReq.getParameter(PARAM_TEXT);
          String[] lines = StringUtil.toStringArray(text, "\n\r");
  
          String fontFamily = pReq.getParameter(PARAM_FONT_FAMILY);
          String fontSize = pReq.getParameter(PARAM_FONT_SIZE);
          String fontStyle = pReq.getParameter(PARAM_FONT_STYLE);
  
          String bgcolor = pReq.getParameter(PARAM_BGCOLOR);
          String fgcolor = pReq.getParameter(PARAM_FGCOLOR);
  
          // TODO: Make them static..
          pRes.addRenderingHints(new RenderingHints(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON));
          pRes.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
          pRes.addRenderingHints(new RenderingHints(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY));
          //    	pRes.addRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON));
  
          //System.out.println(pRes.getBackground());
  
          // Clear area with bgcolor
          if (!StringUtil.isEmpty(bgcolor)) {
              pRes.setBackground(StringUtil.toColor(bgcolor));
              pRes.clearRect(0, 0, pWidth, pHeight);
  
              //System.out.println(pRes.getBackground());
          }
  
          // Create and set font
          Font font = new Font(
                  fontFamily != null ? fontFamily : "Helvetica",
                  getFontStyle(fontStyle),
                  fontSize != null ? Integer.parseInt(fontSize) : 12
          );
          pRes.setFont(font);
  
          // Set rotation
          double angle = getAngle(pReq);
          pRes.rotate(angle, pWidth / 2.0, pHeight / 2.0);
  
          // Draw string in fgcolor
          pRes.setColor(fgcolor != null ? StringUtil.toColor(fgcolor) : Color.black);
  
          float x = ServletUtil.getFloatParameter(pReq, PARAM_MARGIN_LEFT, Float.MIN_VALUE);
          Rectangle2D[] bounds = new Rectangle2D[lines.length];
          if (x <= Float.MIN_VALUE) {
              // Center
              float longest = 0f;
              for (int i = 0; i < lines.length; i++) {
                  bounds[i] = font.getStringBounds(lines[i], pRes.getFontRenderContext());
                  if (bounds[i].getWidth() > longest) {
                      longest = (float) bounds[i].getWidth();
                  }
              }
  
              //x = (float) ((pWidth - bounds.getWidth()) / 2f);
              x = (float) ((pWidth - longest) / 2f);
  
              //System.out.println("marginLeft: " + x);
          }
          //else {
          //System.out.println("marginLeft (from param): " + x);
          //}
  
          float y = ServletUtil.getFloatParameter(pReq, PARAM_MARGIN_TOP, Float.MIN_VALUE);
          float lineHeight = (float) (bounds[0] != null ?
                  bounds[0].getHeight() : font.getStringBounds(lines[0], pRes.getFontRenderContext()).getHeight());
  
          if (y <= Float.MIN_VALUE) {
              // Center
              y = (float) ((pHeight - lineHeight) / 2f)
                      - (lineHeight * (lines.length - 2.5f) / 2f);
  
              //System.out.println("marginTop: " + y);
          }
          else {
              // Todo: Correct for font height?
              y += font.getSize2D();
              //System.out.println("marginTop (from param):" + y);
  
          }
  
          //System.out.println("Font size: " + font.getSize2D());
          //System.out.println("Line height: " + lineHeight);
  
          // Draw
          for (int i = 0; i < lines.length; i++) {
              pRes.drawString(lines[i], x, y + lineHeight * i);
          }
      }