Arduino on the ATMEGA168

For the time being I've given up on getting a bootloader to work on my Atmega168. I compiled my Arduino sketch using the Atmega168 processor setting and then went and dug the .hex file out of the applet folder in its project folder. Then I uploaded it to Atmega168 using AVRdude and the AVR-PG1 dongle. This all worked fine.

The sketch I'd uploaded has a known behavior of outputting (over the serial output) a line of space-delimited integers every two seconds. Interestingly, I noticed that though it was working, it was doing so much more slowly than normal and the output was garbled at the expected baud rate. So I did some experiments by changing the build.f_cpu in the preferences file, ultimately changing it from 16 MHz to just one MHz. At 1 MHz the baud rate matched the one expected, meaning that somehow the compilation process for the Atmega168 is misjudging the baud rate timing by a factor of 16. Mind you, I know for a fact that it is actually being clocked at 16MHz (an Atmega8 works exactly as expected in this same socket). Does anyone have any theories about this peculiar behavior? I have a feeling this all will go a long way to explaining why the Atmega168 bootloader isn't working.