I don't understand.
In 32 bits in C, there are 32 bits float called "float" or "single precision float" but its usage is very uncommon. People always use "double" as every 32 bits processors supports 64 bits float nowadays. When I look at the Cairo reference manual, only double are used, so I don't understand why you need to cast BoxedFloat64 to single precision float for FFI. The ThreadedIA32FFIPlugin has both #ffiPushDoubleFloat:in: and��ffiPushSingleFloat:in: so all the support seems to be available.��
Can you explain why by default you reduce the precision of float to 32 bits ? Is it because the library used expects a single precision float to be passed ?