Just a question, this kind of magnifying doesn't sometimes produce not so good pics?
I used to have a font made out of sprites and then I would just draw them smaller in order to get other font sizes, but sometimes, for instance, half an M would disapear, reapear at a smaller size (I have a pretty good idea on why this happens, but that would be too lengthy for this)
Maybe you should use a mixed tactic, with some kind of several bitmaps at diferent sizes, and varying the dest rect to produce the in between sizes.
Second and even weirder idea: build your own blitter, but instead of for each pixel of the destination bitmap checking for the value on the origin,
make an average of every pixel in the origin that corresponds to the pixel you're filling in your destination
third ... yeah, right... and how would i do nº 2?
fourth: frankly, I'm not sure. maybe having an array of 32bit integers with the dimensions of the destination, adding each of the origin's pixels that fall into that pixel (x_dest=x_orig/scale, y_dest = y_orig/scale)and keeping record of how many pixels (in the origin)per pixel (in the destination), then dividing each value, but that sounds really sloooow....