Qual é a melhor maneira de mostrar uma janela do WPF no local do mouse (no canto superior esquerdo do mouse)?

Descobri que isso funciona PARTE do tempo herdando o ponto do mouse do Windows Forms e subtraindo a altura e a largura da minha janela para definir a esquerda e a parte superior (já que o tamanho da minha janela é fixo):

MyWindowObjectThatInheritsWindow window = new MyWindowObjectThatInheritsWindow();
System.Windows.Point mouseLocation = GetMousePositionWindowsForms();
window.Left = mouseLocation.X - 300;
window.Top = mouseLocation.Y - 240;
window.Show();

Edit: Aqui está o código para obter a posição do mouse ...

public System.Windows.Point GetMousePositionWindowsForms()
{
    System.Drawing.Point point = System.Windows.Forms.Control.MousePosition;
    return new System.Windows.Point(point.X, point.Y);
}

Observe que isso faz com que a borda inferior direita da janela toque no canto superior esquerdo do cursor do mouse. Mas isso quebra para diferentes resoluções de tela, ou talvez vários monitores com resolução diferente? Eu ainda não o limitei completamente, mas eu apenas tentei este mesmo código em outro PC, e ele parece gerar a janela não para o canto superior esquerdo do cursor do mouse, mas para o canto inferior esquerdo dele, e uma boa distância passado isso ...

Eu provavelmente adicionaria os tamanhos das minhas janelas ao conteúdo, largura e altura, por isso não posso usar as propriedades ActualWidth e ActualHeight, pois elas não estão disponíveis. Talvez o problema esteja em conseguir esse tamanho certo? Existe alguma maneira de fazer isso? Eu sei com certeza que os 300 e 240 estão corretos de acordo com o meu PC principal com dois monitores executando resoluções de 1920x1080, já que calculei as larguras e alturas de todos os objetos na minha janela que eu dimensionei explicitamente. Edit: Apenas tentei definir explicitamente a altura e largura para 240/300, para garantir que a janela não é mais dimensionada para o conteúdo, e eu ainda tenho esse problema ao subtrair a altura e largura real!

Alguma ideia?

questionAnswers(3)

yourAnswerToTheQuestion