diff --git a/gtk-3.20/scss/widgets/_overshoot.scss b/gtk-3.20/scss/widgets/_overshoot.scss
index 5716e1e..4411e73 100644
--- a/gtk-3.20/scss/widgets/_overshoot.scss
+++ b/gtk-3.20/scss/widgets/_overshoot.scss
@@ -22,6 +22,13 @@
     $_small_gradient_color: $color;
     $_big_gradient_color: $color;
 
+    @if $color == $fg_color {
+        $_small_gradient_color: darken($borders_color, 10%);
+        $_big_gradient_color: $fg_color;
+
+        @if $t == backdrop { $_small_gradient_color: $backdrop_borders_color; }
+    }
+
     $_small_gradient: -gtk-gradient(radial,
                                     $_position, 0,
                                     $_position, .5,
@@ -77,43 +84,66 @@
     background-repeat: $_gradient_repeat;
     background-origin: content-box;
     background-position: $_bg_pos;
+    border: 0;
+    box-shadow: none;
 }
 
-// This is used by GtkScrolledWindow, when content is touch-dragged past boundaries.
-// This draws a box on top of the content, the size changes programmatically.
-overshoot {
-    &.top {
-        @include overshoot(top);
-
-        &:backdrop { @include overshoot(top, backdrop); }
+scrolledwindow {
+    viewport.frame { // avoid double borders when viewport inside scrolled window
+        border-style: none;
     }
 
-    &.bottom {
-        @include overshoot(bottom);
+    // This is used by GtkScrolledWindow, when content is touch-dragged past boundaries.
+    // This draws a box on top of the content, the size changes programmatically.
+    overshoot {
+        &.top {
+            @include overshoot(top);
 
-        &:backdrop { @include overshoot(bottom, backdrop); }
+            &:backdrop { @include overshoot(top, backdrop); }
+        }
+
+        &.bottom {
+            @include overshoot(bottom);
+
+            &:backdrop { @include overshoot(bottom, backdrop); }
+        }
+
+        &.left {
+            @include overshoot(left);
+
+            &:backdrop { @include overshoot(left, backdrop); }
+        }
+
+        &.right {
+            @include overshoot(right);
+
+            &:backdrop { @include overshoot(right, backdrop); }
+        }
     }
 
-    &.left {
-        @include overshoot(left);
+    // Overflow indication, works similarly to the overshoot, the size if fixed tho.
+    undershoot {
+        &.top { @include undershoot(top); }
 
-        &:backdrop { @include overshoot(left, backdrop); }
+        &.bottom { @include undershoot(bottom); }
+
+        &.left { @include undershoot(left); }
+
+        &.right { @include undershoot(right); }
     }
 
-    &.right {
-        @include overshoot(right);
+    junction { // the small square between two scrollbars
+        border-color: transparent;
+        // the border image is used to add the missing dot between the borders, details, details, details...
+        border-image: linear-gradient(to bottom, $borders_color 1px, transparent 1px) 0 0 0 1 / 0 1px stretch;
+        background-color: $scrollbar_bg_color;
 
-        &:backdrop { @include overshoot(right, backdrop); }
+        &:dir(rtl) { border-image-slice: 0 1 0 0; }
+
+        &:backdrop {
+            border-image-source: linear-gradient(to bottom, $backdrop_borders_color 1px, transparent 1px);
+            background-color: $backdrop_scrollbar_bg_color;
+            transition: 200ms ease-out;
+        }
     }
 }
-
-// Overflow indication, works similarly to the overshoot, the size if fixed tho.
-undershoot {
-    &.top { @include undershoot(top); }
-
-    &.bottom { @include undershoot(bottom); }
-
-    &.left { @include undershoot(left); }
-
-    &.right { @include undershoot(right); }
-}