 
             // Adjust the newSplitView subviews and set the position of the new divider to the middle
             newSplitView.adjustSubviews()
-            newSplitView.setPosition(paneViewSide/2.0, ofDividerAt: 0)
+            newSplitView.setPosition(newPaneViewSide, ofDividerAt: 0)
             
             // Re-adjust the position of our own divider that has certainly wiggled around...
-            self.setPosition(dividerPosition, ofDividerAt: dividerIndex)
+            for index in 0..<self.paneSubviews().count-1 {
+                self.setPosition(CGFloat(index+1)*paneViewSide, ofDividerAt: index)
+            }
+
+            // White magic
+            self.adjustSubviews()
         }
         
         newSplitView.makeKey(newPaneView)

            // First unselect any pane
            self.makeKey(nil)
            
            //
            let dividerIndex = max(0, paneViewIndex - 1)

            // Prepare newSplitView and add the newPaneView to it
            newSplitView.isVertical = vertically
            newSplitView.addSubview(newPaneView)
            
            // Get side size before playing with pane views.
            let paneViewSide = (vertically) ? paneView.frame.width : paneView.frame.height

            // Add the newSplitView after the triggering paneView
            self.insertArrangedSubview(newSplitView, at: paneViewIndex + 1)
            self.adjustSubviews()

            // Remove that paneView
            paneView.removeFromSuperview()

            newSplitView.adjustSubviews()
            
            let newPaneViews = newSplitView.paneSubviews()
            var paneViewSide = (self.isVertical) ? newSplitView.frame.width : newSplitView.frame.height
            paneViewSide = paneViewSide / CGFloat(newPaneViews.count) - newSplitView.dividerThickness*CGFloat(newPaneViews.count-1)
            
            for index in 0..<newPaneViews.count-1 {
