`drag_cancel` is called by a number of ways not just programmatically https://github.com/enthought/enable/blob/master/enable/tools/drag_tool.py#L84. And I am not sure that revert makes sense in all these cases.