It's very hard to understand what "but goes all wrong" means. I mean there are many different kinds of all wrong ( and God knows, I've caused most of them ) so it's hard to know exactly what the problem might be.
Apart from "Can I see a screenshot please?" I guess the question becomes why are you drawing exclusively at integer coordinates? 3D is always floating point and if you want it to scroll ( and zoom? ) smoothly then you'll have to have everything as floating point.
Apart from "Can I see a screenshot please?" I guess the question becomes why are you drawing exclusively at integer coordinates? 3D is always floating point and if you want it to scroll ( and zoom? ) smoothly then you'll have to have everything as floating point.