a) This is correct. The coordinates aren't x,y,width,height, they're left,top,right,bottom, and the help for FillRect() says
"When filling the specified rectangle, FillRect does not include the rectangle's right and bottom sides. GDI fills a rectangle up to, but not including, the right column and bottom row, regardless of the current mapping mode."
<edit> Having said, that, 0,0,8,8 should fill 0->7 x 0->7 inclusive...
b) How far off is it? How are you drawing the rectangles?
If possibile, I'd be using IDirect3DDevice9::ColorFill() and IDirect3DDevice9::StretchRect().
Jim