diff --git a/lib/src/pubspec.dart b/lib/src/pubspec.dart
index 9fb64fb..ae5935e 100644
--- a/lib/src/pubspec.dart
+++ b/lib/src/pubspec.dart
@@ -391,7 +391,11 @@
     if (!allowPreReleaseSdk) return false;
     if (!sdk.version.isPreRelease) return false;
     if (sdkConstraint.includeMax) return false;
-    if (sdkConstraint.min != null && sdkConstraint.min.isPreRelease) {
+    if (sdkConstraint.min != null &&
+        sdkConstraint.min.isPreRelease &&
+        sdkConstraint.min.major == sdk.version.major &&
+        sdkConstraint.min.minor == sdk.version.minor &&
+        sdkConstraint.min.patch == sdk.version.patch) {
       return false;
     }
     if (sdkConstraint.max == null) return false;
diff --git a/test/version_solver_test.dart b/test/version_solver_test.dart
index 18f9786..04f7d14 100644
--- a/test/version_solver_test.dart
+++ b/test/version_solver_test.dart
@@ -1216,18 +1216,18 @@
             output: isNot(contains('PUB_ALLOW_PRERELEASE_SDK')));
       });
 
-      test("no min pre-release constraint", () async {
+      test("no min pre-release constraint that matches the current SDK",
+          () async {
         await d.dir(appPath, [
           await d.pubspec({
             'name': 'myapp',
-            'environment': {'sdk': '>=1.2.3-dev.2.0 <2.0.0'}
+            'environment': {'sdk': '>=1.2.3-dev.2.0 <1.2.3'}
           })
         ]).create();
 
         await expectResolves(
-            environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.1.0'},
-            error: 'Package myapp requires SDK version >=1.2.3-dev.2.0 <2.0.0 '
-                'but the current SDK is 1.2.3-dev.1.0.');
+            environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.3.0'},
+            output: isNot(contains('PUB_ALLOW_PRERELEASE_SDK')));
       });
 
       test("no build release constraints", () async {
@@ -1244,18 +1244,34 @@
       });
     });
 
-    test("works generally", () async {
-      await d.dir(appPath, [
-        await d.pubspec({
-          'name': 'myapp',
-          'environment': {'sdk': '<1.2.3'}
-        })
-      ]).create();
+    group("allows", () {
+      test("an exclusive max that matches the current SDK", () async {
+        await d.dir(appPath, [
+          await d.pubspec({
+            'name': 'myapp',
+            'environment': {'sdk': '<1.2.3'}
+          })
+        ]).create();
 
-      await expectResolves(
-          environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.1.0'},
-          output: allOf(contains('PUB_ALLOW_PRERELEASE_SDK'),
-              contains('<=1.2.3-dev.1.0'), contains('myapp')));
+        await expectResolves(
+            environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.1.0'},
+            output: allOf(contains('PUB_ALLOW_PRERELEASE_SDK'),
+                contains('<=1.2.3-dev.1.0'), contains('myapp')));
+      });
+
+      test("a pre-release min that doesn't match the current SDK", () async {
+        await d.dir(appPath, [
+          await d.pubspec({
+            'name': 'myapp',
+            'environment': {'sdk': '>=1.0.0-dev.1.0 <1.2.3'}
+          })
+        ]).create();
+
+        await expectResolves(
+            environment: {'_PUB_TEST_SDK_VERSION': '1.2.3-dev.1.0'},
+            output: allOf(contains('PUB_ALLOW_PRERELEASE_SDK'),
+                contains('<=1.2.3-dev.1.0'), contains('myapp')));
+      });
     });
   });
 }
