The desired behavior for me is to have this saved as a larger version of exactly what's on screen, however it's currently just tiling the contents of the screen, so I basically end up with four circles in a large image. Do I need to zoom the camera in on the portion I want to render each draw iteration or something?
You are probably setting your matrices inside of your app::draw() method. The tr.nextTile() method sets up the correct matrices for the tile, so if you change the matrices after that you undo the correct tiling behavior.
A common (enough) pattern for dealing with this is to set your matrices in update(). That way, you can think of draw() as purely presenting the things you have, without regard for where they are being presented.