bitaddress would be perfect but I want it to have some modifications:
1. bulk wallet (and paper wallet) using compressed keys.
2. QR code error options for both public and private keys.
I may end up manually generating compressed keys and manually loading them into some QR code generator with error correction level H (high or 30%). Then print a few per page or even one per page.
Brainwallet.org currently has no easily accessible options for QR code, I am guessing you had to play with the source files and do a little editing there.
If you install Armory on the offline computer, you can modify the python code to do what you want. Armory has QR codes everywhere -- and there's a simple wrapper around a python-qr library that says "give me the smallest qr code that holds these X bytes", and it spits out a NxN matrix of 1s and 0s which represents the QR code. In Armory, that NxN may equal 53x53, so I scale draw a bunch of 5x5 black and white boxes to make a 265x265 pixel QR code. Of course, that's already wrapped up, you can just put a QRCodeWidget anywhere with any data you want. Create a new dialog, or butcher one of the existing ones, add QR codes to it.
(P.S. - if you're in Windows, ignore this... it's a total PITA to get Windows setup with all the dependencies to run the python scripts, and load Armory... it's fairly trivial in linux, though)