anchor.diff:    n: integer;
     r: TfpgRect;
   begin
  -  PrepareToShow;
     Canvas.BeginDraw;
     inherited HandlePaint;
     r.SetRect(0, 0, Width, Height);
  
positive.code:   else
    begin
      x := rect.Left + FSymbolWidth + FTextMargin;
  
      mi.DrawText(Canvas, x, rect.top);
  
      if mi.HotKeyDef <> '' then
      begin
        s := mi.HotKeyDef;
        fpgStyle.DrawString(Canvas, rect.Right-FMenuFont.TextWidth(s)-FTextMargin, rect.Top, s, mi.Enabled);
  //      Canvas.DrawString(rect.Right-FMenuFont.TextWidth(s)-FTextMargin, rect.Top, s);
      end;
  
      if mi.SubMenu <> nil then
      begin
        canvas.SetColor(Canvas.TextColor);
        x := (rect.height div 2) - 3;
        img := fpgImages.GetImage('sys.sb.right');
        Canvas.DrawImage(rect.right-x-2, rect.Top + ((rect.Height-img.Height) div 2), img);
  //      canvas.FillTriangle(rect.right-x-2, rect.top+2,
  //                          rect.right-2, rect.top+2+x,
  //                          rect.right-x-2, rect.top+2+2*x);
      end;
    end;
  end;
  
negative.code:   achar := '&';
    s := Text;
  
    if Checked then
    begin
      img := fpgImages.GetImage('stdimg.check');    // Do NOT localize
      ACanvas.DrawImage(x-AImgWidth-2, y, img);   // 2 = margin.
    end;
    
    repeat
      p := UTF8Pos(achar, s);
      if p > 0 then
      begin
        // first part of text before the & sign
        fpgStyle.DrawString(ACanvas, x, y, UTF8Copy(s, 1, p-1), Enabled);
  
        inc(x, fpgStyle.MenuFont.TextWidth(UTF8Copy(s, 1, p-1)));
        if UTF8Copy(s, p+1, 1) = achar then
        begin
          // Do we need to paint a actual & sign (create via && in item text)
          fpgStyle.DrawString(ACanvas, x, y, achar, Enabled);
          inc(x, fpgStyle.MenuFont.TextWidth(achar));
        end
  