Flipping (Mirroring) Nodes

I now have the following:


private void FlipNode(object sender, RoutedEventArgs e)
        {
            Node node = this.myDiagram.SelectedNode;

            FrameworkElement container = node.FindNamedDescendant("Container") as FrameworkElement;

            if (container.RenderTransform is ScaleTransform)
            {
                container.RenderTransform = null;
            }
            else
            {
                container.RenderTransformOrigin = new Point(0.5, 0.5);
                container.RenderTransform = new ScaleTransform(-1, 1);
            }

            foreach (FrameworkElement port in node.Ports)
                FlipPort(port);

            foreach (Link link in node.LinksConnected)
                link.Route.RecomputePoints();
        }

        private void FlipPort(FrameworkElement port)
        {
            Spot spot = SpotPanel.GetSpot(port);
            spot = new Spot((1 - spot.X), spot.Y);

            SpotPanel.SetSpot(port, spot);


            Spot linkSpot = Node.GetFromSpot(port);

            if (linkSpot == Spot.MiddleLeft)
                linkSpot = Spot.MiddleRight;
            else if (linkSpot == Spot.MiddleRight)
                linkSpot = Spot.MiddleLeft;

            Node.SetFromSpot(port, linkSpot);
            Node.SetToSpot(port, linkSpot);

            if (port.Name.Contains("L") || port.Name.Contains("R"))
                SpotPanel.SetAlignment(port, linkSpot);
        }

And this is what I am seeing…

Initial:

Link Drawn:

Flipped:

Deselected & reselected: