diff --git a/src/common/latex.py b/src/common/latex.py
index 2d783726d7efcafbc16f72161687e52be5e1c328..777577d1cf2fde6e68c3794c114b2a16b6ec1a1c 100644
--- a/src/common/latex.py
+++ b/src/common/latex.py
@@ -114,6 +114,12 @@ def latex_to_image(str_):
 	result = None
 	exitcode = 0
 
+	try:
+		bg_str, fg_str = gajim.interface.get_bg_fg_colors()
+	except:
+		# interface may not be available when we test latext at startup
+		bg_str, fg_str = 'rgb 1.0 1.0 1.0', 'rgb 0.0 0.0 0.0'
+
 	# filter latex code with bad commands
 	if check_blacklist(str_):
 		# we triggered the blacklist, immediately return None
@@ -131,7 +137,7 @@ def latex_to_image(str_):
 	if exitcode == 0:
 		# convert dvi to png
 		latex_png_dpi = gajim.config.get('latex_png_dpi')
-		exitcode = try_run(['dvipng', '-bg', 'rgb 1.0 1.0 1.0', '-T',
+		exitcode = try_run(['dvipng', '-bg', bg_str, '-fg', fg_str, '-T',
 				'tight', '-D', latex_png_dpi, tmpfile + '.dvi', '-o',
 				tmpfile + '.png'])
 
diff --git a/src/gajim.py b/src/gajim.py
index b8512ac43d89bde620ea0198c053fa35471fc392..46357eb4b94595707171fab245647f39169da9a8 100644
--- a/src/gajim.py
+++ b/src/gajim.py
@@ -3036,6 +3036,25 @@ class Interface:
 			pep.user_send_tune(acct, artist, title, source)
 			gajim.connections[acct].music_track_info = music_track_info
 
+	def get_bg_fg_colors(self):
+		def gdkcolor_to_rgb (gdkcolor):
+			return [c / 65535. for c in (gdkcolor.red, gdkcolor.green,
+				gdkcolor.blue)]
+
+		def format_rgb (r, g, b):
+			return ' '.join([str(c) for c in ('rgb', r, g, b)])
+
+		def format_gdkcolor (gdkcolor):
+			return format_rgb (*gdkcolor_to_rgb (gdkcolor))
+		
+		# get style colors and create string for dvipng
+		dummy = gtk.Invisible()
+		dummy.ensure_style()
+		style = dummy.get_style()
+		bg_str = format_gdkcolor(style.base[gtk.STATE_NORMAL])
+		fg_str = format_gdkcolor(style.text[gtk.STATE_NORMAL])
+		return (bg_str, fg_str)
+
 	def read_sleepy(self):
 		'''Check idle status and change that status if needed'''
 		if not self.sleeper.poll():