diff --git a/src/MetricsInfo.cpp b/src/MetricsInfo.cpp
index c3e4fe878b..26e2373765 100644
--- a/src/MetricsInfo.cpp
+++ b/src/MetricsInfo.cpp
@@ -167,13 +167,9 @@ PainterInfo::PainterInfo(BufferView * bv, lyx::frontend::Painter & painter)
 }
 
 
-void PainterInfo::draw(int x, int y, char_type c, frontend::InputMethod const * im,
-                       pos_type const char_format_index)
+void PainterInfo::draw(int x, int y, char_type c)
 {
-	if (im == nullptr)
-		pain.text(x, y, c, base.font);
-	else
-		pain.text(x, y, c, im, char_format_index);
+	pain.text(x, y, c, base.font);
 }
 
 
@@ -183,6 +179,14 @@ void PainterInfo::draw(int x, int y, docstring const & str)
 }
 
 
+void PainterInfo::drawWithInputMethod(int x, int y, char_type c,
+                                      frontend::InputMethod const * im,
+                                      pos_type const char_format_index)
+{
+	pain.text(x, y, c, im, char_format_index);
+}
+
+
 ColorCode PainterInfo::backgroundColor(Inset const * inset, bool sel) const
 {
 	if (selected && sel)
diff --git a/src/MetricsInfo.h b/src/MetricsInfo.h
index 064448c53a..061309d3e5 100644
--- a/src/MetricsInfo.h
+++ b/src/MetricsInfo.h
@@ -124,11 +124,13 @@ public:
 	///
 	PainterInfo(BufferView * bv, frontend::Painter & pain);
 	///
-	void draw(int x, int y, char_type c,
-	          frontend::InputMethod const * im = nullptr,
-	          pos_type const char_format_index = 0);
+	void draw(int x, int y, char_type c);
 	///
 	void draw(int x, int y, docstring const & str);
+	///
+	void drawWithInputMethod(int x, int y, char_type c,
+	                         frontend::InputMethod const * im,
+	                         pos_type const char_format_index);
 
 	/// Determines the background color based on the
 	/// selection state, the background color inherited from the parent inset
diff --git a/src/insets/Inset.h b/src/insets/Inset.h
index 1392223d5d..7916628a5d 100644
--- a/src/insets/Inset.h
+++ b/src/insets/Inset.h
@@ -213,9 +213,10 @@ public:
 	virtual void metrics(MetricsInfo & mi, Dimension & dim) const = 0;
 	/// draw inset and update (xo, yo)-cache
 	virtual void draw(PainterInfo & pi, int x, int y) const = 0;
-	/// draw inset and update (xo, yo)-cache
-	virtual void draw(PainterInfo &, int, int, frontend::InputMethod const *,
-	                  pos_type const) const {}
+	/// draw inset using input method and update (xo, yo)-cache
+	virtual void drawWithInputMethod(PainterInfo &, int, int,
+	                                 frontend::InputMethod const *,
+	                                 pos_type const) const {}
 	/// draw inset selection if necessary
 	virtual void drawSelection(PainterInfo &, int, int) const {}
 	/// draw inset background if the inset has an own background and a
diff --git a/src/mathed/InsetMathChar.cpp b/src/mathed/InsetMathChar.cpp
index a18520633a..3179589fd5 100644
--- a/src/mathed/InsetMathChar.cpp
+++ b/src/mathed/InsetMathChar.cpp
@@ -155,14 +155,6 @@ void InsetMathChar::metrics(MetricsInfo & mi, Dimension & dim) const
 
 
 void InsetMathChar::draw(PainterInfo & pi, int x, int y) const
-{
-	draw(pi, x, y, nullptr, 0);
-}
-
-
-void InsetMathChar::draw(PainterInfo & pi, int x, int y,
-                         frontend::InputMethod const * im,
-                         pos_type const char_format_index) const
 {
 	// lyxerr << "drawing '" << char_ << "' font: " << pi.base.fontname << std::endl;
 	if (isMathFont(pi.base.fontname)) {
@@ -195,7 +187,15 @@ void InsetMathChar::draw(PainterInfo & pi, int x, int y,
 	if (pi.base.fontname == "mathnormal") {
 		x += max(-theFontMetrics(pi.base.font).lbearing(char_), 0);
 	}
-	pi.draw(x, y, char_, im, char_format_index);
+	pi.draw(x, y, char_);
+}
+
+
+void InsetMathChar::drawWithInputMethod(PainterInfo & pi, int x, int y,
+                         frontend::InputMethod const * im,
+                         pos_type const char_format_index) const
+{
+	pi.drawWithInputMethod(x, y, char_, im, char_format_index);
 }
 
 
diff --git a/src/mathed/InsetMathChar.h b/src/mathed/InsetMathChar.h
index de7937d939..2d1e59adcb 100644
--- a/src/mathed/InsetMathChar.h
+++ b/src/mathed/InsetMathChar.h
@@ -28,9 +28,9 @@ public:
 	///
 	void draw(PainterInfo & pi, int x, int y) const override;
 	///
-	void draw(PainterInfo & pi, int x, int y,
-	          frontend::InputMethod const * im,
-	          pos_type const char_format_index) const override;
+	void drawWithInputMethod(PainterInfo & pi, int x, int y,
+	                         frontend::InputMethod const * im,
+	                         pos_type const char_format_index) const override;
 	///
 	void metricsT(TextMetricsInfo const & mi, Dimension & dim) const override;
 	///
diff --git a/src/mathed/MathRow.cpp b/src/mathed/MathRow.cpp
index aca6a3d805..71bb21bae9 100644
--- a/src/mathed/MathRow.cpp
+++ b/src/mathed/MathRow.cpp
@@ -344,7 +344,8 @@ void MathRow::draw(PainterInfo & pi, int x, int const y) const
 			if (e.im == nullptr)
 				e.inset->draw(pi, x + e.before, y);
 			else
-				e.inset->draw(pi, x + e.before, y, e.im, e.char_format_index);
+				e.inset->drawWithInputMethod(pi, x + e.before, y, e.im,
+				                             e.char_format_index);
 			g.pos = {x, y};
 			g.dim.wid += e.before + e.after;
 			drawMarkers(pi, e, x, y);
