I use follow code to draw grid 
procedure TfrmMain.img1DrawBackBuffer(Sender: TObject);
var
  i,j: integer;
  pt: TPoint;
  z:Double;
  offx,offy:DOUBLE;
begin
  if not btnGridShow.down then
  begin
    z:=img1.Zoom / 100;
     if img1.Zoom<80 then
     begin
     end
     else
     begin
      with img1.BackBuffer.Canvas do
        begin
          if img1.ViewX =0 then
          begin
            offx:=0;
          end
          else
          begin
          offx:=((img1.ViewX mod 10)) ;
          end;
          if img1.ViewY = 0 then
          begin
            offy := 0 ;
          end
          else
          begin
           offy:=((img1.ViewY mod 10)) ;
          end;
          Pen.Color := clNavy;
          Pen.Mode := pmNotXor;
          MoveTo ( 0, 0 );
          for i := 0 to 120 do
          begin
            MoveTo ( 0,  Trunc(i*11.811*z) ); // draw rows
            LineTo ( Trunc(1200*Z),Trunc(i*11.811*z) ) ;
          end;
          MoveTo ( 0, 0 );
          for i := 0 to 100 do
          begin
            MoveTo ( Trunc(i*11.811*z),0   ); // draw rows
            LineTo ( Trunc(i*11.811*z),Trunc(1000*Z )) ;
          end;
        end;
     end;
  end;
end;