SDL Event and UserEvent questions

This looks a bit odd. picker is already a pointer (because ColorPicker is a class, i.e. a reference type). Do you really want a double pointer here? This is now a pointer to the pointer of an instance of ColorPicker.
Maybe this should rather be pointer.as(Void*)?