Arduino baud rate 8 times too high?

I'm having a strange issue where in order to get the expected serial output on my serial monitor, I have to set the baud rate on my serial monitor to be 8 times higher than the rate that i set in my Serial.begin(). For example, Serial.begin(4800) works with a serial monitor baud rate of 38400.

The setup is an atmega328P and an atmega8u2 built up on a breadboard similar to an UNO R1. I followed Nick Gammon's tutorial and his scripts to flash the 328P with the bootloader (Gammon Forum : Electronics : Microprocessors : How to make an Arduino-compatible minimal board), and I used the DFU programmer (on OS X) to flash the 8u2. When I plug my computer into the USB connector on the breadboard, the device correctly shows up as an Arduino Uno in my computer's devices list using lsusb. I can also flash sketches to the 328P using the breadboard tutorial (https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard).

The fact that I get the expected results on my serial monitor (even though it's at the wrong baud rate) leads me to believe my hardware is set up correctly. I'm thinking that it could be a bit/byte confusion in the firmware, has anyone encountered something like this or have ideas? I currently can't flash sketches over the USB connector and I believe it is due to the baud rate mismatch.

Let me guess - you're intending to use the internal oscillator at 8MHz, but you haven't done "burn bootloader" with an ISP programmer connected to it? You need to do that - a brand new AVR defaults to 1MHz, so that it can operate within spec even at the low end of the supported voltage range. You need to set the fuses to turn off CKDIV8 if you want it to run at 8MHz. Even when not using a bootloader, you still need to do "burn bootloader" to set the fuses.