diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py
index 28c4c9caa8fd..1f8e40e28e31 100644
--- a/lib/matplotlib/axes/_base.py
+++ b/lib/matplotlib/axes/_base.py
@@ -3082,7 +3082,7 @@ def set_xbound(self, lower=None, upper=None):
         Set the lower and upper numerical bounds of the x-axis.
 
         This method will honor axes inversion regardless of parameter order.
-        It will not change the autoscaling setting (``Axes._autoscaleXon``).
+        It will not change the autoscaling setting (`.get_autoscalex_on()`).
 
         Parameters
         ----------
@@ -3100,22 +3100,13 @@ def set_xbound(self, lower=None, upper=None):
             lower, upper = lower
 
         old_lower, old_upper = self.get_xbound()
-
         if lower is None:
             lower = old_lower
         if upper is None:
             upper = old_upper
 
-        if self.xaxis_inverted():
-            if lower < upper:
-                self.set_xlim(upper, lower, auto=None)
-            else:
-                self.set_xlim(lower, upper, auto=None)
-        else:
-            if lower < upper:
-                self.set_xlim(lower, upper, auto=None)
-            else:
-                self.set_xlim(upper, lower, auto=None)
+        self.set_xlim(sorted((lower, upper), reverse=self.xaxis_inverted()),
+                      auto=None)
 
     def get_xlim(self):
         """
@@ -3480,7 +3471,7 @@ def set_ybound(self, lower=None, upper=None):
         Set the lower and upper numerical bounds of the y-axis.
 
         This method will honor axes inversion regardless of parameter order.
-        It will not change the autoscaling setting (``Axes._autoscaleYon``).
+        It will not change the autoscaling setting (`.get_autoscaley_on()`).
 
         Parameters
         ----------
@@ -3498,22 +3489,13 @@ def set_ybound(self, lower=None, upper=None):
             lower, upper = lower
 
         old_lower, old_upper = self.get_ybound()
-
         if lower is None:
             lower = old_lower
         if upper is None:
             upper = old_upper
 
-        if self.yaxis_inverted():
-            if lower < upper:
-                self.set_ylim(upper, lower, auto=None)
-            else:
-                self.set_ylim(lower, upper, auto=None)
-        else:
-            if lower < upper:
-                self.set_ylim(lower, upper, auto=None)
-            else:
-                self.set_ylim(upper, lower, auto=None)
+        self.set_ylim(sorted((lower, upper), reverse=self.yaxis_inverted()),
+                      auto=None)
 
     def get_ylim(self):
         """
diff --git a/lib/mpl_toolkits/mplot3d/axes3d.py b/lib/mpl_toolkits/mplot3d/axes3d.py
index 624d46f003ae..d258a6feb4dd 100644
--- a/lib/mpl_toolkits/mplot3d/axes3d.py
+++ b/lib/mpl_toolkits/mplot3d/axes3d.py
@@ -1464,30 +1464,24 @@ def get_zbound(self):
     def set_zbound(self, lower=None, upper=None):
         """
         Set the lower and upper numerical bounds of the z-axis.
+
         This method will honor axes inversion regardless of parameter order.
-        It will not change the :attr:`_autoscaleZon` attribute.
+        It will not change the autoscaling setting (`.get_autoscalez_on()`).
 
         .. versionadded :: 1.1.0
             This function was added, but not tested. Please report any bugs.
         """
         if upper is None and np.iterable(lower):
             lower, upper = lower
+
         old_lower, old_upper = self.get_zbound()
         if lower is None:
             lower = old_lower
         if upper is None:
             upper = old_upper
 
-        if self.zaxis_inverted():
-            if lower < upper:
-                self.set_zlim(upper, lower, auto=None)
-            else:
-                self.set_zlim(lower, upper, auto=None)
-        else:
-            if lower < upper:
-                self.set_zlim(lower, upper, auto=None)
-            else:
-                self.set_zlim(upper, lower, auto=None)
+        self.set_zlim(sorted((lower, upper), reverse=self.zaxis_inverted()),
+                      auto=None)
 
     def text(self, x, y, z, s, zdir=None, **kwargs):
         '''