The problem is that TDBGrid implements its own event type for OnUserCheckboxBitmap, different from the one used by TCustomGrid. When you assign an event handler to OnUserCheckboxBitmap of TDBGrid the OnUserCheckboxBitmap of TCustomGrid remains unassigned.
The checkboxes are painted by DrawGridCheckboxBitmaps inherited from TCustomGrid. Here the TCustomGrid queries whether a handler is assigned to its OnUserCheckboxBitmap, and since there is none in case of the TDBGrid it proceeds with the standard checkbox bitmap.
You should file a bug report.
@Zoran: You post works only for TStringGrid and TDrawGrid, but not for TDBGrid where the event handler is not called due to incompatible events.
Normally new features (here: new event) are not back-ported to fixes. What is the risk that the fix will damage anything?
Zoran, I removed the OnUserCheckboxImage event from trunk and put r60571+60578 on the merge request list. I though I could apply your original patch again to bring in the event, but this does not seem to work. Could you prepare a patch for the event based on the current state of trunk (r6078)?