"It is filling all sectors to zero, I did this because I thought it can possibly delete the bad blocks."
From my experience, it is almost impossible to "delete the bad blocks" because bad blocks are really bad - if you write zero there you can never be sure if it will stay zero and how long - next reboot and you get 1 instead of 0 and something goes very
wrong. Especially bad things happen if bad block gets on a partition table or file table - you may lose many files not because the files are on bad sectors but because file allocation table gets corrupted When you said "and I saw when it finished it said
something like Windows fixed some errors of the volume bitmap." <- I guess this time your file allocation table got on a bad block in the process of those shrinking/expanding experiments.
What seems weird is that HDTune and other utilities did not detect these bad blocks. And also this "I also tried running chkdsk from the windows 7 cd and for some reason it completed in less than 2 hours." confuses me.
But I completely agree with J W Stuart that you should not try to put any partition on a bad block
The best solution is to isolate bad block(s) so they get in unallocated space. If I had a choice: reliable storage versus some inconveniences in disk partition structure (it seems you won't be able to have a big C partition for Windows any more), I would
choose reliability :) Of course you cannot be sure that your hard drive is not failing or will not fail soon but I have seen some drives that are working for many years after isolating the bad block.
Also the fact that Windows is not able to completely mark those bad blocks when doing the full format so they are avoided further - this is really bad sign, I am afraid that you have no choice but to follow J W Stuart's advice to split partitions and get
those "baddies" in unallocated space.
BTW, I have tried Norton Ghost (do not remember the version) and Acronis True Image. I noticed that after restoring the image with Norton Ghost, my drive became also fully defragmented. I am not sure, but it seems Norton Ghost is restoring not sector-by-sector
but is also accounting for files. Acronis does not act that way. But I am not 100% sure, maybe that was just a coincidence.
Anyway, this was my 0.1$ :)