private async void RegionClickCanvas_MouseUp(object sender, MouseButtonEventArgs e) { isSelecting = false; Matrix m = PresentationSource.FromVisual(this).CompositionTarget.TransformToDevice; var mPt = GetMousePos(); System.Windows.Point movingPoint = e.GetPosition(this); movingPoint.X *= m.M11; movingPoint.Y *= m.M22; movingPoint.X = Math.Round(movingPoint.X); movingPoint.Y = Math.Round(movingPoint.Y); if (mPt == movingPoint) { Debug.WriteLine("Probably on Screen 1"); } double correctedLeft = this.Left; double correctedTop = this.Top; if (correctedLeft < 0) { correctedLeft = 0; } if (correctedTop < 0) { correctedTop = 0; } double xDimScaled = (Canvas.GetLeft(selectBorder) * m.M11); double yDimScaled = (Canvas.GetTop(selectBorder) * m.M22); Rectangle regionScaled = new Rectangle( (int)xDimScaled, (int)yDimScaled, (int)(selectBorder.Width * m.M11), (int)(selectBorder.Height * m.M22)); string grabbedText = ""; // remove selectBorder before capture - force screen Re-render to actually remove it try { RegionClickCanvas.Children.Remove(selectBorder); } catch { } RegionClickCanvas.Background.Opacity = 0; RegionClickCanvas.UpdateLayout(); RegionClickCanvas.Dispatcher.Invoke(() => { }, DispatcherPriority.Render); if (regionScaled.Width < 3 || regionScaled.Height < 3) { grabbedText = await GetClickedWord(new System.Windows.Point(xDimScaled, yDimScaled)); } else { grabbedText = await GetRegionsText(regionScaled); } if (string.IsNullOrWhiteSpace(grabbedText) == false) { Clipboard.SetText(grabbedText); App.Current.Shutdown(); } else { RegionClickCanvas.Background.Opacity = .2; } }