Help with serialport buffer overwrite on Nano

Yes, those FF's and not supposed to be there... it is supposed to count up. It does not work without the Delays and you need longer delays at slower baudrates. I am not sure why, but I guess if (!Serial.available()) {} is not correct unless you delay after a Serial.read(). As I said "At 4800 it needs delay(3)" and it works that way for sending my test count-up file with correct 153 bytes everytime. I now have it working with boblight+getpixel too, kinda... the colors are off, but it does change in response to screen color. Also, it is delayed so a single color-change fades in over 5 seconds, blinking once a second.

Can someone please explain to me how boblight (1.3b for windows) is sending it's packet structure? I thought it was <0x00> <0x00> <1:r> <1:g> <1:b> <2:r> ... Is the packet format different then that?

I am also looking in to just writing my own windows program that uses CreateDIBSection to read the screen pixels and sends out the serial bytes to the Arduino.

EDIT: But I still don't understand how I can send a single 153-byte packet at 115200 and receive them all correctly. Why does it drop all those bytes, skipping, and then replacing the missing end bytes with FF?