Ah....found the problem.

"COLOR* pixel_color;" needs to be "COLOR pixel_color;". I'm passing a pointer to a color instead of the color vector itself - THATS what was crashing pixel_to_vec().

Dumb, dumb, dumb me. every other capitalised variable declaration requires a * (PANEL*, TEXT*, BMAP*, FONT*, etc etc). I know not ALL of them do though, I need to learn to check these things.

Thank you everyone for your time and input.