diff --git a/source/texk/web2c/luatexdir/tex/mlist.w b/source/texk/web2c/luatexdir/tex/mlist.w
index 1695fb7ac8eac644bac89997fc9ede7bfe52f7c5..32a8c9b61f34147b49e450b58aa99eb462528843 100644
--- a/source/texk/web2c/luatexdir/tex/mlist.w
+++ b/source/texk/web2c/luatexdir/tex/mlist.w
@@ -2186,6 +2186,7 @@ static void do_make_math_accent(pointer q, internal_font_number f, int c, int fl
     scaled w;              /* width of the accentee, not including sub/superscripts */
     boolean s_is_absolute; /* will be true if a top-accent is placed in |s| */
     scaled fraction ;
+    scaled ic = 0;
     scaled target ;
     extinfo *ext;
     pointer attr_p;
@@ -2277,6 +2278,12 @@ static void do_make_math_accent(pointer q, internal_font_number f, int c, int fl
             delta = delta + height(x) - h;
             h = height(x);
         }
+    } else if ((vlink(q) != null) && (type(nucleus(q)) == math_char_node)) {
+        /* only pure math char nodes */
+        internal_font_number f = fam_fnt(math_fam(nucleus(q)),cur_size);
+        if (is_new_mathfont(f)) {
+            ic = char_italic(f,math_character(nucleus(q)));
+        }
     }
     /* the top accents of both characters are aligned */
     if (s_is_absolute) {
@@ -2340,6 +2347,10 @@ static void do_make_math_accent(pointer q, internal_font_number f, int c, int fl
     } else {
         shift_amount(y) = -(h - height(y));
     }
+    if (ic != 0) {
+        /* old font codepath has ic built in, new font code doesn't */
+        width(r) += ic ;
+    }
     math_list(nucleus(q)) = y;
     type(nucleus(q)) = sub_box_node;
 }