Most probably your bios/partition program uses LBA adressing, and linux does not, so same number of blocks (read from the partition table, the same for every program) but of smaller size (normal vs LBA) may accout for your situation. Try passing the argument hdX=lba to the kernel maybe ?
-- I'm an occurence of the I love GNU virus. Please help me spread.