diff --git a/core/lib/Drupal/Core/Block/BlockBase.php b/core/lib/Drupal/Core/Block/BlockBase.php
index bcc3954..d06960d 100644
--- a/core/lib/Drupal/Core/Block/BlockBase.php
+++ b/core/lib/Drupal/Core/Block/BlockBase.php
@@ -10,6 +10,7 @@
 use Drupal\Component\Utility\Unicode;
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Language\LanguageInterface;
+use Drupal\Core\Plugin\PluginFormInterface;
 use Drupal\Core\Plugin\PluginWithFormsInterface;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\Component\Transliteration\TransliterationInterface;
@@ -276,16 +277,19 @@ public function setTransliteration(TransliterationInterface $transliteration) {
    * {@inheritdoc}
    */
   public function getFormClass($operation) {
-    if ($this->hasFormClass($operation)) {
+    if (isset($this->getPluginDefinition()['forms'][$operation])) {
       return $this->getPluginDefinition()['forms'][$operation];
     }
+    elseif ($operation == 'configure' && $this instanceof PluginFormInterface) {
+      return static::CLASS;
+    }
   }
 
   /**
    * {@inheritdoc}
    */
   public function hasFormClass($operation) {
-    return isset($this->getPluginDefinition()['forms'][$operation]);
+    return !empty($this->getFormClass($operation));
   }
 
 }
diff --git a/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php b/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
index fa706a4..62decb2 100644
--- a/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
+++ b/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
@@ -247,12 +247,6 @@ public function processDefinition(&$definition, $plugin_id) {
     if (!empty($this->defaults) && is_array($this->defaults)) {
       $definition = NestedArray::mergeDeep($this->defaults, $definition);
     }
-
-    // If no default form is defined and this plugin implements
-    // \Drupal\Core\Plugin\PluginFormInterface, use that for the default form.
-    if (!isset($definition['forms']['configure']) && isset($definition['class']) && is_subclass_of($definition['class'], PluginFormInterface::class)) {
-      $definition['forms']['configure'] = $definition['class'];
-    }
   }
 
   /**
diff --git a/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/ExtendNonInstalledClassOperation.php b/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/ExtendNonInstalledClassOperation.php
new file mode 100644
index 0000000..9e476c6
--- /dev/null
+++ b/core/modules/system/tests/modules/image_test/src/Plugin/ImageToolkit/Operation/test/ExtendNonInstalledClassOperation.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Drupal\image_test\Plugin\ImageToolkit\Operation\test;
+
+use Drupal\non_installed_module\Plugin\ImageToolkit\Operation\test\OperationBase;
+
+/**
+ * An image toolkit operation extending from a non-installed module class.
+ *
+ * @ImageToolkitOperation(
+ *   id = "test_extend_non_installed_class_operation",
+ *   toolkit = "test",
+ *   operation = "extend_non_installed_class_operation",
+ *   label = @Translation("Extend non installed class operation"),
+ *   description = @Translation("Operation extending from a non-installed module class.")
+ * )
+ */
+class ExtendNonInstalledClassOperation extends OperationBase { }
diff --git a/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginManagerTest.php b/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginManagerTest.php
index feac004..c0423bc 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/DefaultPluginManagerTest.php
@@ -383,7 +383,6 @@ public function providerTestProcessDefinition() {
     $data['no_form'][] = ['class' => TestPluginForm::class];
     $data['no_form'][] = [
       'class' => TestPluginForm::class,
-      'forms' => ['configure' => TestPluginForm::class],
       'foo' => ['bar' => ['baz']],
     ];
 
