diff --git a/lib/src/command/dependency_services.dart b/lib/src/command/dependency_services.dart
index dd3379f..0e731f4 100644
--- a/lib/src/command/dependency_services.dart
+++ b/lib/src/command/dependency_services.dart
@@ -403,18 +403,22 @@
     final min = original.min;
     final max = original.max;
     if (max != null && newVersion >= max) {
-      return VersionRange(
-        min: min,
-        includeMin: original.includeMin,
-        max: newVersion.nextBreaking.firstPreRelease,
+      return compatibleWithIfPossible(
+        VersionRange(
+          min: min,
+          includeMin: original.includeMin,
+          max: newVersion.nextBreaking.firstPreRelease,
+        ),
       );
     }
     if (min != null && newVersion <= min) {
-      return VersionRange(
-          min: newVersion,
-          includeMin: true,
-          max: max,
-          includeMax: original.includeMax);
+      return compatibleWithIfPossible(
+        VersionRange(
+            min: newVersion,
+            includeMin: true,
+            max: max,
+            includeMax: original.includeMax),
+      );
     }
   }
 
@@ -422,3 +426,11 @@
   throw ArgumentError.value(
       original, 'original', 'Must be a Version range or empty');
 }
+
+VersionConstraint compatibleWithIfPossible(VersionRange versionRange) {
+  final min = versionRange.min;
+  if (min != null && min.nextBreaking.firstPreRelease == versionRange.max) {
+    return VersionConstraint.compatibleWith(min);
+  }
+  return versionRange;
+}
diff --git a/test/dependency_services/dependency_services_test.dart b/test/dependency_services/dependency_services_test.dart
index f25cf2d..694e229 100644
--- a/test/dependency_services/dependency_services_test.dart
+++ b/test/dependency_services/dependency_services_test.dart
@@ -203,7 +203,8 @@
   testWithGolden('multibreaking', (context) async {
     final server = (await servePackages())
       ..serve('foo', '1.0.0')
-      ..serve('bar', '1.0.0');
+      ..serve('bar', '1.0.0')
+      ..serve('baz', '1.0.0');
 
     await d.dir(appPath, [
       d.pubspec({
@@ -211,6 +212,8 @@
         'dependencies': {
           'foo': '^1.0.0',
           'bar': '^1.0.0',
+          // Pinned version. See that the widened constraint is correct.
+          'baz': '1.0.0',
         },
       })
     ]).create();
@@ -221,7 +224,7 @@
       ..serve('foo', '3.0.0', deps: {'bar': '^2.0.0'}) // multi breaking
       ..serve('foo', '3.0.1', deps: {'bar': '^2.0.0'})
       ..serve('bar', '2.0.0', deps: {'foo': '^3.0.0'})
-      ..serve('transitive', '1.0.0');
+      ..serve('baz', '1.1.0');
     await listReportApply(context, [
       _PackageVersion('foo', Version.parse('3.0.1'),
           constraint: VersionConstraint.parse('^3.0.0')),
diff --git a/test/testdata/goldens/dependency_services/dependency_services_test/multibreaking.txt b/test/testdata/goldens/dependency_services/dependency_services_test/multibreaking.txt
index 10f5426..32bc04e 100644
--- a/test/testdata/goldens/dependency_services/dependency_services_test/multibreaking.txt
+++ b/test/testdata/goldens/dependency_services/dependency_services_test/multibreaking.txt
@@ -1,7 +1,7 @@
 # GENERATED BY: test/dependency_services/dependency_services_test.dart
 
 $ cat pubspec.yaml
-{"name":"app","dependencies":{"foo":"^1.0.0","bar":"^1.0.0"},"environment":{"sdk":">=0.1.2 <1.0.0"}}
+{"name":"app","dependencies":{"foo":"^1.0.0","bar":"^1.0.0","baz":"1.0.0"},"environment":{"sdk":">=0.1.2 <1.0.0"}}
 $ cat pubspec.lock
 # Generated by pub
 # See https://dart.dev/tools/pub/glossary#lockfile
@@ -13,6 +13,13 @@
       url: "http://localhost:$PORT"
     source: hosted
     version: "1.0.0"
+  baz:
+    dependency: "direct main"
+    description:
+      name: baz
+      url: "http://localhost:$PORT"
+    source: hosted
+    version: "1.0.0"
   foo:
     dependency: "direct main"
     description:
@@ -35,6 +42,12 @@
       "constraint": "^1.0.0"
     },
     {
+      "name": "baz",
+      "version": "1.0.0",
+      "kind": "direct",
+      "constraint": "1.0.0"
+    },
+    {
       "name": "foo",
       "version": "1.0.0",
       "kind": "direct",
@@ -81,6 +94,38 @@
       ]
     },
     {
+      "name": "baz",
+      "version": "1.0.0",
+      "kind": "direct",
+      "latest": "1.1.0",
+      "constraint": "1.0.0",
+      "compatible": [],
+      "singleBreaking": [
+        {
+          "name": "baz",
+          "version": "1.1.0",
+          "kind": "direct",
+          "constraintBumped": "^1.1.0",
+          "constraintWidened": "^1.0.0",
+          "constraintBumpedIfNeeded": "^1.1.0",
+          "previousVersion": "1.0.0",
+          "previousConstraint": "1.0.0"
+        }
+      ],
+      "multiBreaking": [
+        {
+          "name": "baz",
+          "version": "1.1.0",
+          "kind": "direct",
+          "constraintBumped": "^1.1.0",
+          "constraintWidened": "^1.0.0",
+          "constraintBumpedIfNeeded": "^1.1.0",
+          "previousVersion": "1.0.0",
+          "previousConstraint": "1.0.0"
+        }
+      ]
+    },
+    {
       "name": "foo",
       "version": "1.0.0",
       "kind": "direct",
@@ -145,7 +190,7 @@
 -------------------------------- END OF OUTPUT ---------------------------------
 
 $ cat pubspec.yaml
-{"name":"app","dependencies":{"foo":^3.0.0,"bar":^2.0.0},"environment":{"sdk":">=0.1.2 <1.0.0"}}
+{"name":"app","dependencies":{"foo":^3.0.0,"bar":^2.0.0,"baz":"1.0.0"},"environment":{"sdk":">=0.1.2 <1.0.0"}}
 $ cat pubspec.lock
 # Generated by pub
 # See https://dart.dev/tools/pub/glossary#lockfile
@@ -157,6 +202,13 @@
       url: "http://localhost:$PORT"
     source: hosted
     version: "2.0.0"
+  baz:
+    dependency: "direct main"
+    description:
+      name: baz
+      url: "http://localhost:$PORT"
+    source: hosted
+    version: "1.0.0"
   foo:
     dependency: "direct main"
     description:
