Just taking a look to your code, maybe I'm missing something, but I think it would be a good idea to add a member variable to hold the global mouse position where you have dropped and object.
You could update it in this event from the DragSource (maybe on mouse move could be as well a good idea):
sender, MouseButtonEventArgs e)
By doing this we can retrieve the exact coordinate where the user has dropped the control (in a diagram like application is quite important to know this, tried with MouseMove on the parent container but is launched after the releasecapture).
Will try to hook to mousemove / leftbutton up of the Drag Source to avoid modifying your root code (will try to inherit and create a member variable for that global coords).