Not to sound dense (and I haven't taken the time to test drive your posted code yet) but is there any reason that you can't just make the image a BG for the heading? You could make the heading 100% width with text-align:center and using the correct line-height you should be able to do this without any positioning at all.
Aside from that, I have always heard that changing top, bottom, left, or right positioning with relative posititioning is a bit finnicky. If you don't/can't make the image a bg image then try adding a similar -21px vertical shift to the data below the heading.
Again, I've been too busy today to actually fart around with your code so the above might be completely worthless. In that event, I apolgize!
Edit: Nevermind about the bg image thing. I remembered almost instantly after posting that you are doing this to keep the image in the page when printed... DUH! Like I said, it's been a busy day...