I've never used transforms for that... unless you really want scaling or something. But just re-adjusting the size of the viewport is as simple as keeping track of it.
1. Make a sub-bitmap the size of the viewport, draw to it, and then draw the "viewport bitmap" to the screen.
2. Change the clipping rectangle for the screen, draw your viewport graphics, and then change the clipping rectangle back to normal.
All my viewports (I don't do scaling) are simply x, y, w, h, x_offset, y_offset.
x,y - position on the SCREEN
w,h - width/height
x_offset,y_offset - offset into the world in map coordinates.