10% are
by far too few. Twice the size (four times the area) would provide a marginal improvement, 4x is okayish, 8x is good and from 16x on you get "production quality" results, though anything beyond 32x latest should pretty much make no visible difference no more.
If your rendering is such that you can pick any (x,y)-value and get the color at this position back (like raytracing for example), you won't have to actually render to that sizes, but could just sample multiple times for one pixel, each time with a sub-pixel offset, and average those. If it's drawing like with LineTo() and such, then you'd be better off really doing it with the oversized version.
The functions' i- and j-loops start with 1. I belive they should go from 0, but then you have to make sure that whenever (i-1) and/or (j-1) occurs, you need to clamp to 0, because negative indexes won't do very well
. This at least would be my first shot, I haven't and currently cannot test it myself.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)