I'm Half way through reading Phaelax tutorial and yes I see what you are saying Cash and Phaelax. I don't know why I didn't think of doing it this way to start with. It just makes common sense.
Find the top left position of the viewport in terms of tiles 3 down 3 across for example then from there scroll through only the tiles across and down that your viewport can see.
The way I was doing it was scroll through every tile on the map. Check if it was being viewed by the viewport. If it was paste it to the screen. Much more slow and it kept on growing exponentially slower as the map got bigger.

BTW: Great tutorials Phaelax, I'm going to read through your other tutorials once I get a chance.