anchor.diff:    clipr: TfpgRect;   // clip rectangle
     drawstate: TfpgGridDrawState;
     cLeft: integer;
  -  c: integer;
  +  rTop: integer;
  +  firstcol, lastcol, firstrow, lastrow : integer;
  +  cWidths: array of integer;
   begin
     Canvas.ClearClipRect;
   
  
positive.code:   r := clipr;
  
    cLeft := FMargin; // column starting point
    if go_SmoothScroll in FOptions then
    begin
      if FHScrollBar.Visible then
        Dec(cLeft, FHScrollBar.Position);
      c := 0;
    end
    else
    begin
      c := FFirstCol;
    end;
  
    if (ColumnCount > 0) and ShowHeader then
    begin
      // Drawing horizontal headers
      r.Left := cLeft;
      r.Height := FHeaderHeight;
      Canvas.SetFont(FHeaderFont);
      for col := c to ColumnCount-1 do
      begin
        r.Width := ColumnWidth[col];
        Canvas.SetClipRect(clipr);
        Canvas.AddClipRect(r);
        DrawHeader(col, r, 0);
        inc(r.Left, r.Width);
        if r.Left >= clipr.Right then
          Break;  // small optimization. Don't draw what we can't see
      end;
      inc(r.Top, r.Height);
    end;
  
negative.code:     r.Height := DefaultRowHeight;
      Canvas.SetFont(FFont);
  
      for row := firstrow to lastrow do
      begin
        r.Left := cLeft;
        for col := firstcol to lastcol do
        begin
          drawstate := [];
          r.Width := cWidths[col];
          Canvas.SetClipRect(clipr);
  
          if (row = FFocusRow) and (RowSelect or (col = FFocusCol)) and not (go_HideFocusRect in FOptions) then
  