private Point ConvertClientPointToScreen (IntPtr handle, Point point) {
Point converted_point = new Point ();
Carbon.Rect window_bounds = new Carbon.Rect ();
Carbon.CGPoint native_point = new Carbon.CGPoint ();
GetWindowBounds (HIViewGetWindow (handle), 32, ref window_bounds);
native_point.x = point.X;
native_point.y = point.Y;
HIViewConvertPoint (ref native_point, handle, IntPtr.Zero);
converted_point.X = (int)(native_point.x + window_bounds.left);
converted_point.Y = (int)(native_point.y + window_bounds.top);
return converted_point;
}