protected override Size ArrangeOverride(Size finalSize)
        {
            Point anchorPoint = this.AdornedElement.TranslatePoint(new Point(this.AdornedElement.RenderSize.Width, 0), this.ScrollViewer);

            AdornerLocation anchor = AnnotationAdorner.GetAnchor(this);

            if (anchor == AdornerLocation.None)
            {
                // Calculate based on the real size of the adorner, depending on current zoom level
                DesignerView designerView = ((WorkflowViewElement)AdornedElement).Context.Services.GetService <DesignerView>();
                double       zoomLevel    = designerView.ZoomFactor;
                Size         adornerSize  = new Size(this.content.DesiredSize.Width * zoomLevel, this.content.DesiredSize.Height * zoomLevel);
                anchor = FindAnchor(anchorPoint, adornerSize, new Rect(0, 0, this.ScrollViewer.ViewportWidth, this.ScrollViewer.ViewportHeight));
                AnnotationAdorner.SetAnchor(this, anchor);
            }

            Point location = CalculateLocation(anchor, this.AdornedElement.RenderSize, this.content.DesiredSize);

            this.content.Arrange(new Rect(location, finalSize));

            return(finalSize);
        }