Some further research. I found the cause of the discrepancy. In drupal, on an admin account, a toolbar 'overlay' generated by jquery adds height to the body element but not the html element. It accounts exactly for the # of bytes difference. Don't know how to solve it though. Interestingly, a background color on the html element covers the background completely no matter what the html height is, but a background-image gradient doesn't. It quits at the html's height value. Will experiment some more.