diff --git a/src/evalvars.c b/src/evalvars.c
index bd8cc73..496666e 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -4680,27 +4680,44 @@
     void
 expand_autload_callback(callback_T *cb)
 {
+    char_u	*name;
     char_u	*p;
     imported_T	*import;
 
-    if (!in_vim9script() || cb->cb_name == NULL || !cb->cb_free_name)
+    if (!in_vim9script() || cb->cb_name == NULL
+	    || (!cb->cb_free_name
+	       && (cb->cb_partial == NULL || cb->cb_partial->pt_name == NULL)))
 	return;
-    p = vim_strchr(cb->cb_name, '.');
+    if (cb->cb_partial != NULL)
+	name = cb->cb_partial->pt_name;
+    else
+	name = cb->cb_name;
+    p = vim_strchr(name, '.');
     if (p == NULL)
 	return;
-    import = find_imported(cb->cb_name, p - cb->cb_name, FALSE, NULL);
+    import = find_imported(name, p - name, FALSE, NULL);
     if (import != NULL && SCRIPT_ID_VALID(import->imp_sid))
     {
 	scriptitem_T *si = SCRIPT_ITEM(import->imp_sid);
 
 	if (si->sn_autoload_prefix != NULL)
 	{
-	    char_u *name = concat_str(si->sn_autoload_prefix, p + 1);
+	    char_u *newname = concat_str(si->sn_autoload_prefix, p + 1);
 
-	    if (name != NULL)
+	    if (newname != NULL)
 	    {
-		vim_free(cb->cb_name);
-		cb->cb_name = name;
+		if (cb->cb_partial != NULL)
+		{
+		    if (cb->cb_name == cb->cb_partial->pt_name)
+			cb->cb_name = newname;
+		    vim_free(cb->cb_partial->pt_name);
+		    cb->cb_partial->pt_name = newname;
+		}
+		else
+		{
+		    vim_free(cb->cb_name);
+		    cb->cb_name = newname;
+		}
 	    }
 	}
     }
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index 4e0b533..506b0ee 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -673,6 +673,39 @@
   &rtp = save_rtp
 enddef
 
+def Test_use_autoload_import_partial_in_opfunc()
+  mkdir('Xdir/autoload', 'p')
+  var save_rtp = &rtp
+  exe 'set rtp^=' .. getcwd() .. '/Xdir'
+
+  var lines =<< trim END
+      vim9script
+      export def Opfunc(..._)
+        g:opfunc_called = 'yes'
+      enddef
+  END
+  writefile(lines, 'Xdir/autoload/opfunc.vim')
+
+  new
+  lines =<< trim END
+      vim9script
+      import autoload 'opfunc.vim'
+      nnoremap <expr> <F3> TheFunc()
+      def TheFunc(): string
+        &operatorfunc = function('opfunc.Opfunc', [0])
+        return 'g@'
+      enddef
+      feedkeys("\<F3>l", 'xt')
+      assert_equal('yes', g:opfunc_called)
+  END
+  CheckScriptSuccess(lines)
+
+  set opfunc=
+  bwipe!
+  delete('Xdir', 'rf')
+  &rtp = save_rtp
+enddef
+
 def Test_use_autoload_import_in_fold_expression()
   mkdir('Xdir/autoload', 'p')
   var save_rtp = &rtp
diff --git a/src/version.c b/src/version.c
index 3b7cddd..4c263ae 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4209,
+/**/
     4208,
 /**/
     4207,
