diff --git a/lib/mpl_toolkits/axes_grid1/inset_locator.py b/lib/mpl_toolkits/axes_grid1/inset_locator.py
index b3cd7c31604f..9d350510742f 100644
--- a/lib/mpl_toolkits/axes_grid1/inset_locator.py
+++ b/lib/mpl_toolkits/axes_grid1/inset_locator.py
@@ -278,10 +278,16 @@ def get_path(self):
         return Path(path_merged)
 
 
-def _add_inset_axes(parent_axes, inset_axes):
+def _add_inset_axes(parent_axes, axes_class, axes_kwargs, axes_locator):
     """Helper function to add an inset axes and disable navigation in it."""
-    parent_axes.figure.add_axes(inset_axes)
-    inset_axes.set_navigate(False)
+    if axes_class is None:
+        axes_class = HostAxes
+    if axes_kwargs is None:
+        axes_kwargs = {}
+    inset_axes = axes_class(
+        parent_axes.figure, parent_axes.get_position(),
+        **{"navigate": False, **axes_kwargs, "axes_locator": axes_locator})
+    return parent_axes.figure.add_axes(inset_axes)
 
 
 @_docstring.dedent_interpd
@@ -386,42 +392,25 @@ def inset_axes(parent_axes, width, height, loc='upper right',
         Inset axes object created.
     """
 
-    if axes_class is None:
-        axes_class = HostAxes
-    if axes_kwargs is None:
-        axes_kwargs = {}
-    inset_axes = axes_class(parent_axes.figure, parent_axes.get_position(),
-                            **axes_kwargs)
-
-    if bbox_transform in [parent_axes.transAxes,
-                          parent_axes.figure.transFigure]:
-        if bbox_to_anchor is None:
-            _api.warn_external("Using the axes or figure transform requires a "
-                               "bounding box in the respective coordinates. "
-                               "Using bbox_to_anchor=(0, 0, 1, 1) now.")
-            bbox_to_anchor = (0, 0, 1, 1)
-
+    if (bbox_transform in [parent_axes.transAxes, parent_axes.figure.transFigure]
+            and bbox_to_anchor is None):
+        _api.warn_external("Using the axes or figure transform requires a "
+                           "bounding box in the respective coordinates. "
+                           "Using bbox_to_anchor=(0, 0, 1, 1) now.")
+        bbox_to_anchor = (0, 0, 1, 1)
     if bbox_to_anchor is None:
         bbox_to_anchor = parent_axes.bbox
-
     if (isinstance(bbox_to_anchor, tuple) and
             (isinstance(width, str) or isinstance(height, str))):
         if len(bbox_to_anchor) != 4:
             raise ValueError("Using relative units for width or height "
                              "requires to provide a 4-tuple or a "
                              "`Bbox` instance to `bbox_to_anchor.")
-
-    axes_locator = AnchoredSizeLocator(bbox_to_anchor,
-                                       width, height,
-                                       loc=loc,
-                                       bbox_transform=bbox_transform,
-                                       borderpad=borderpad)
-
-    inset_axes.set_axes_locator(axes_locator)
-
-    _add_inset_axes(parent_axes, inset_axes)
-
-    return inset_axes
+    return _add_inset_axes(
+        parent_axes, axes_class, axes_kwargs,
+        AnchoredSizeLocator(
+            bbox_to_anchor, width, height, loc=loc,
+            bbox_transform=bbox_transform, borderpad=borderpad))
 
 
 @_docstring.dedent_interpd
@@ -493,22 +482,12 @@ def zoomed_inset_axes(parent_axes, zoom, loc='upper right',
         Inset axes object created.
     """
 
-    if axes_class is None:
-        axes_class = HostAxes
-    if axes_kwargs is None:
-        axes_kwargs = {}
-    inset_axes = axes_class(parent_axes.figure, parent_axes.get_position(),
-                            **axes_kwargs)
-
-    axes_locator = AnchoredZoomLocator(parent_axes, zoom=zoom, loc=loc,
-                                       bbox_to_anchor=bbox_to_anchor,
-                                       bbox_transform=bbox_transform,
-                                       borderpad=borderpad)
-    inset_axes.set_axes_locator(axes_locator)
-
-    _add_inset_axes(parent_axes, inset_axes)
-
-    return inset_axes
+    return _add_inset_axes(
+        parent_axes, axes_class, axes_kwargs,
+        AnchoredZoomLocator(
+            parent_axes, zoom=zoom, loc=loc,
+            bbox_to_anchor=bbox_to_anchor, bbox_transform=bbox_transform,
+            borderpad=borderpad))
 
 
 class _TransformedBboxWithCallback(TransformedBbox):
@@ -565,11 +544,8 @@ def mark_inset(parent_axes, inset_axes, loc1, loc2, **kwargs):
         inset_axes.viewLim, parent_axes.transData,
         callback=parent_axes._unstale_viewLim)
 
-    if 'fill' in kwargs:
-        pp = BboxPatch(rect, **kwargs)
-    else:
-        fill = bool({'fc', 'facecolor', 'color'}.intersection(kwargs))
-        pp = BboxPatch(rect, fill=fill, **kwargs)
+    kwargs.setdefault("fill", bool({'fc', 'facecolor', 'color'}.intersection(kwargs)))
+    pp = BboxPatch(rect, **kwargs)
     parent_axes.add_patch(pp)
 
     p1 = BboxConnector(inset_axes.bbox, rect, loc1=loc1, **kwargs)