It depends on what language your using, but they tend to have something called min and mag filters, for scaling the image up or down. If you scale down, you might want a different style to when you scale up. Like, if you want a zoomed in view to be pixelated, but zoomed out you might prefer to have it soften the pixels to reduce the jaggies and flicker that often comes with image scaling.
In AppGameKit, you would use:
SetImageMinFilter(img,0)
SetImageMagFilter(img,0)
In DBPro, you would use:
Set object filter obj,0
or
Set sprite spr,0,1
I think - can't be 100% sure - but you will find a way to change the filter mode in most languages.
One thing to keep in mind, is that it can be really difficult for 2D images to rotate neatly at native resolution. What I mean is, if you have a sprite and are rotating it and scaling it even - because it's the same resolution as the screen, pixels can take on an almost binary behavior - like either visible or not, because it can't interpolate between pixels.
To counter-act this, I would draw at double the resolution I need. It would allow for much neater rotation and scaling, because the rendered pixels have more data to go by - so edges that might be jagged at native resolution might have 3 more pixels to calculate, and provide a much nicer result, less jarring differences between small rotations etc.
I guess, what I'm really saying is that if you want to scale your image by half and not loose half the quality... draw it at double the resolution you'll be displaying it at usually

I got a fever, and the only prescription, is more memes.
