имеется программа в которой нужно с помощью перетаскивания изображений слева на правый план помещения создать некую карту. Перетаскивание я реализовать смог, но когда начинаю узнавать расположение курсора то у меня всё плывёт и появляется не на своих местах. Так же надо чтобы при изменении размера окна изображения не уходили со своих мест на плане.

Последнее что я пробовал это
XAML
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="75"/>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<TextBlock Text="Служба соревнований" FontSize="30" Foreground="Gray" Grid.Row="0" Grid.ColumnSpan="2"></TextBlock>
<TextBlock Text="План помещения" FontSize="20" Grid.Row="1" Grid.Column="1" Margin="10"></TextBlock>
<Border BorderBrush="Gray" BorderThickness="1" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Grid.RowSpan="2" Margin="10"/>
<Border BorderBrush="Gray" BorderThickness="1" Margin="10" Grid.Row="1" Grid.RowSpan="2">
<ScrollViewer>
<StackPanel Orientation="Vertical" x:Name="stackPanelPlaces" Margin="5">
</StackPanel>
</ScrollViewer>
</Border>
<StackPanel Grid.Row="3" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="Отчистить" Name="buttonClear" Click="ButtonClear_Click" Width="100" Margin="5" Height="25" ></Button>
<Button Content="Сохранить" Name="buttonSave" Click="ButtonSave_Click" Width="100" Margin="5" Height="25" ></Button>
</StackPanel>
<DockPanel Grid.Column="1" Grid.Row="2" Margin="20,0,20,20">
<Image Source="/WorldSkills;component/Images/BuildingPlan.jpg" AllowDrop="True" Drop="Image_Drop" Name="imageMap" ></Image>
</DockPanel>
<Grid x:Name="gridMap" Grid.Column="1" Grid.Row="2" Margin="20,0,20,20" Drop="Image_Drop" AllowDrop="True">
</Grid>
</Grid>
C#
private void Image_Drop(object sender, DragEventArgs e)
{
if (currentImage != null)
{
Image image = new Image();
image.Source = currentImage;
image.Width = 32;
image.Height = 32;
//var p = Mouse.GetPosition(null);
//var t1 = Mouse.GetPosition(this);
//var t = this.PointFromScreen(t1);
System.Drawing.Point p = System.Windows.Forms.Cursor.Position;
image.RenderTransform = new TranslateTransform { X = p.X, Y = p.Y };
gridMap.Children.Add(image);
System.Windows.Forms.MessageBox.Show(p.X + "-" + p.Y);
}
}