I have a div with background image which contains 3 colors of the same icon

I shift the icon (background-position: top/center/bottom) according to what page is user viewing: 
All works fine utill I zoom the page (ctrl + mousewheel) – than the background image seems to shift one pixel up or something, so i can see one-pixel line of the other icon at the bottom of my wrapper div: 
Screens are from IE but it looks even more broken on iPad…
Any thoughts about what is causing this and how to fix it?

You can prevent any of the other images inside the sprite from showing by using diagonal sprites, or simply leaving some space between each image.
Use should use explicit
pxoffsets instead. I suspect that will be slightly more robust when it comes to zooming.There’s nothing you can really do to prevent things sometimes being “1px off” when you zoom.
For example, if you have a
42pxhigh element, and you zoom to 125%, then you have a52.5pxhigh element. The browser must round that number one way or the other.