The thing about the quake model format is that it stores all of the coordinates of the verties as single bytes, in the range 0-255. The model then has an offset vector and a scale vector in floating point values. You may find if you save and reload your model in QMe then it will have developed inaccuracies. The grid in QMe works seperately to this rounding off, so it usually just makes things worse.
Of course, if you only have one frame, then the upper and lower boundaries of the model will always be correct, as they are stored as '0 0 0' and '255 255 255' as bytes, meaning one is the offset vector, and one is the offset plus the scale vector.
The easiest way of thinking of this in my opinion is that quake creates a grid with 256 gridlines in each direction, then scales it so that it exactly contains the model in all the frames. The vertices that are furthest out on each direction sit on the edge of the grid, and everything else is snapped to it.
The problems will arise once you make the model larger than that 64x64x64 box in some frames, in any direction. Then the scale and offset vectors get recalculated, and the box vertices get snapped to a new grid. One way to get round this is have a frame somewhere in the model larger than all the other frames, with two vertices placed very carefully. For instance, if you have one vertex at '-128 -128 -128' and one at '127 127 127', and nothing outside those ranges in any frame, then your grid will be in multiples of 1 quake unit. If this isn't a clear explanation, take a look at:
http://www.btinternet.com/~chapterhonour/pickup.zip
which shows it in practice.
The thing is, adding this weird sized frame is just tricking the tools into making the scale and offset into being correct. At some point, I plan to modify my export script for blender so that you can specify offset and scale manually, rather than have it calculated automatically. Of course, if you make the scale too small to accomodate the model then outlying vertices will get squashed, it'll need some thought.