Scrollbar: Avoid overlapping the opposite side when window (often a child window) is forcibly too small.
diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt
index 3eaed62..d8e96b4 100644
--- a/docs/CHANGELOG.txt
+++ b/docs/CHANGELOG.txt
@@ -43,6 +43,7 @@
 
 Other Changes:
 - Window: Fixed InnerClipRect right-most coordinates using wrong padding setting (introduced in 1.71).
+- Scrollbar: Avoid overlapping the opposite side when window (often a child window) is forcibly too small.
 - Word-wrapping: Fixed overzealous word-wrapping when glyph edge lands exactly on the limit. Because
   of this, auto-fitting exactly unwrapped text would make it wrap. (fixes initial 1.15 commit, 78645a7d).
 - Scrolling: Added SetScrollHereX(), SetScrollFromPosX() for completeness. (#1580) [@kevreco]
diff --git a/imgui_demo.cpp b/imgui_demo.cpp
index 8d9337a..a8d72f2 100644
--- a/imgui_demo.cpp
+++ b/imgui_demo.cpp
@@ -2079,8 +2079,8 @@
 
         ImGuiStyle& style = ImGui::GetStyle();
         float child_w = (ImGui::GetContentRegionAvail().x - 4 * style.ItemSpacing.x) / 5;
-        if (child_w < 20.0f)
-            child_w = 20.0f;
+        if (child_w < 1.0f)
+            child_w = 1.0f;
         ImGui::PushID("##VerticalScrolling");
         for (int i = 0; i < 5; i++)
         {
diff --git a/imgui_widgets.cpp b/imgui_widgets.cpp
index a5959c2..8af935c 100644
--- a/imgui_widgets.cpp
+++ b/imgui_widgets.cpp
@@ -895,13 +895,13 @@
     ImRect bb;
     if (axis == ImGuiAxis_X)
     {
-        bb.Min = ImVec2(inner_rect.Min.x, outer_rect.Max.y - border_size - scrollbar_size);
+        bb.Min = ImVec2(inner_rect.Min.x, ImMax(outer_rect.Min.y, outer_rect.Max.y - border_size - scrollbar_size));
         bb.Max = ImVec2(inner_rect.Max.x, outer_rect.Max.y);
         rounding_corners |= ImDrawCornerFlags_BotLeft;
     }
     else
     {
-        bb.Min = ImVec2(outer_rect.Max.x - border_size - scrollbar_size, inner_rect.Min.y);
+        bb.Min = ImVec2(ImMax(outer_rect.Min.x, outer_rect.Max.x - border_size - scrollbar_size), inner_rect.Min.y);
         bb.Max = ImVec2(outer_rect.Max.x, window->InnerRect.Max.y);
         rounding_corners |= ((window->Flags & ImGuiWindowFlags_NoTitleBar) && !(window->Flags & ImGuiWindowFlags_MenuBar)) ? ImDrawCornerFlags_TopRight : 0;
     }