ULN2803 and common-anode RGB strip; how am I doing it wrong?
The COM pin on the ULN2803 is for protection when driving inductive loads, which means motors, solenoid.  For an LED, nothing needs connect to COM.

The chip you are using is a low side driver.  That means it connects between the low side of the load (your LED) and ground.  When you drive +5 to the input pin, the transistors will conduct, connecting the output pin to ground.

So for your LED strip make the following connections:


Arduino output pin -> driver input, 1B = pin 1 
driver output, 1C = pin 18 -> LED strip R G or B 
+12 -> LED strip common power
ground -> GND = pin 9


Without the ground connection on the driver chip, no surprise that odd things happened.  There are diodes designed to protect the input and output pins (see chip data sheet).  Without the ground connection to the driver chip, the input protection diode might have been conducting back to the microcontroller output pin.