I've got my GUI working alongside BGL contexts (using Max2D for fonts at the moment) and the Graphics() context. Basically, I'm using my own projection matrix for the 2D, and I push a new (client) attrib state before drawing. CEngine does this as well. Also, this screenshot showcases the 3d viewport gadget of CGUI, using CEngine to render its contents (you pass a function pointer to its Render field and it calls that when it's drawn [after saving attrib states]).