diff --git a/data/webview.css b/data/webview.css
index 9ff8220..c97d11b 100644
--- a/data/webview.css
+++ b/data/webview.css
@@ -1,6 +1,7 @@
 html, body {
   padding: 0;
   margin: 0;
+  -webkit-font-smoothing: antialiased;
 }
 
 body {
diff --git a/mail/em-format-html.c b/mail/em-format-html.c
index 0dd190e..f6124fa 100644
--- a/mail/em-format-html.c
+++ b/mail/em-format-html.c
@@ -55,6 +55,7 @@
 #include <shell/e-shell.h>
 
 #include <glib/gi18n.h>
+#include <pango/pango.h>
 
 #include <JavaScriptCore/JavaScript.h>
 #include <webkit/webkit.h>
@@ -84,6 +85,10 @@ struct _EMFormatHTMLPrivate {
 	guint show_sender_photo	: 1;
 	guint show_real_date	: 1;
         guint animate_images    : 1;
+
+	gboolean use_custom_fonts;
+	gchar *monospace_font;
+	gchar *variable_font;
 };
 
 static gpointer parent_class;
@@ -101,7 +106,10 @@ enum {
 	PROP_SHOW_SENDER_PHOTO,
 	PROP_SHOW_REAL_DATE,
 	PROP_TEXT_COLOR,
-        PROP_ANIMATE_IMAGES
+        PROP_ANIMATE_IMAGES,
+	PROP_MONOSPACE_FONT,
+	PROP_VARIABLE_FONT,
+	PROP_USE_CUSTOM_FONTS
 };
 
 #define EFM_MESSAGE_START_ANAME "evolution_message_start"
@@ -760,7 +768,7 @@ efh_write_text_plain (EMFormat *emf,
 	content = g_strdup_printf (
 		"<div class=\"part-container\" style=\"border-color: #%06x; "
 		"background-color: #%06x; color: #%06x;\">"
-		"<div class=\"part-container-inner-margin\">\n",
+		"<div class=\"part-container-inner-margin pre\">\n",
 		e_color_to_value (&efh->priv->colors[
 			EM_FORMAT_HTML_COLOR_FRAME]),
 		e_color_to_value (&efh->priv->colors[
@@ -1395,6 +1403,24 @@ efh_set_property (GObject *object,
 				EM_FORMAT_HTML (object),
 				g_value_get_boolean (value));
 			return;
+
+		case PROP_MONOSPACE_FONT:
+			em_format_html_set_monospace_font (
+				EM_FORMAT_HTML (object),
+				g_value_get_string (value));
+			return;
+
+		case PROP_VARIABLE_FONT:
+			em_format_html_set_variable_font (
+				EM_FORMAT_HTML (object),
+				g_value_get_string (value));
+			return;
+
+		case PROP_USE_CUSTOM_FONTS:
+			em_format_html_set_use_custom_fonts (
+				EM_FORMAT_HTML (object),
+				g_value_get_boolean (value));
+			return;
 	}
 
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -1492,6 +1518,24 @@ efh_get_property (GObject *object,
 				value, em_format_html_get_animate_images (
 				EM_FORMAT_HTML (object)));
 			return;
+
+		case PROP_MONOSPACE_FONT:
+			g_value_set_string (
+				value, em_format_html_get_monospace_font (
+				EM_FORMAT_HTML (object)));
+			return;
+
+		case PROP_VARIABLE_FONT:
+			g_value_set_string (
+				value, em_format_html_get_variable_font (
+				EM_FORMAT_HTML (object)));
+			return;
+
+		case PROP_USE_CUSTOM_FONTS:
+			g_value_set_boolean (
+				value, em_format_html_get_use_custom_fonts (
+				EM_FORMAT_HTML (object)));
+			return;
 	}
 
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -1578,24 +1622,101 @@ efh_write_message (EMFormat *emf,
 	GList *iter;
 	EMFormatHTML *efh;
 	gchar *header;
+	gchar *variable_style, *monospace_style;
+	const gchar *styles[] = { "normal", "oblique", "italic" };
+	GSettings *settings;
+	PangoFontDescription *fd;
+	PangoWeight weight;
+	PangoStyle style;
+
 
 	efh = (EMFormatHTML *) emf;
 
+	if (efh->priv->use_custom_fonts && efh->priv->monospace_font) {
+		fd = pango_font_description_from_string (efh->priv->monospace_font);
+		weight = pango_font_description_get_weight (fd);
+		style = pango_font_description_get_style (fd);
+	} else {
+		gchar *monospace_font;
+
+		settings = g_settings_new ("org.gnome.desktop.interface");
+		monospace_font = g_settings_get_string (settings, "monospace-font-name");
+		fd = pango_font_description_from_string(monospace_font ? monospace_font : "monospace 10");
+		if (monospace_font)
+			g_free (monospace_font);
+		g_object_unref (settings);
+	}
+
+	monospace_style = g_strdup_printf (
+		".pre {\n"
+		"font-family: %s;\n"
+		"font-size: %d pt;\n"
+		"font-weight: %d;\n"
+		"font-style: %s;\n"
+		"}",
+		pango_font_description_get_family (fd),
+		pango_font_description_get_size (fd) / PANGO_SCALE,
+		weight, styles[style]
+	);
+
+	pango_font_description_free (fd);
+
+
+	if (efh->priv->use_custom_fonts && efh->priv->variable_font) {
+		fd = pango_font_description_from_string (efh->priv->variable_font);
+		weight = pango_font_description_get_weight (fd);
+		style = pango_font_description_get_style (fd);
+	} else {
+		gchar *variable_font;
+
+		settings = g_settings_new ("org.gnome.desktop.interface");
+		variable_font = g_settings_get_string (settings, "font-name");
+		fd = pango_font_description_from_string (variable_font ? variable_font : "serif 10");
+		if (variable_font)
+			g_free (variable_font);
+
+		g_object_unref (settings);
+	}
+
+	variable_style = g_strdup_printf (
+		"body {\n"
+		"font-family: %s;\n"
+		"font-size: %d pt;\n"
+		"font-weight: %d;\n"
+		"font-style: %s;\n"
+		"}",
+		pango_font_description_get_family (fd),
+		pango_font_description_get_size (fd) / PANGO_SCALE,
+		weight, styles[style]
+	);
+
+	pango_font_description_free (fd);
+
 	header = g_strdup_printf (
 		"<!DOCTYPE HTML>\n<html>\n"
 		"<head>\n<meta name=\"generator\" content=\"Evolution Mail Component\" />\n"
 		"<title>Evolution Mail Display</title>\n"
 		"<link type=\"text/css\" rel=\"stylesheet\" href=\"evo-file://" EVOLUTION_PRIVDATADIR "/theme/webview.css\" />\n"
 		"<style type=\"text/css\">\n"
+		"  %s\n"
+		"  %s\n"
 		"  table th { color: #000; font-weight: bold; }\n"
 		"</style>\n"
 		"</head><body bgcolor=\"#%06x\">",
+		variable_style ? variable_style : "",
+		monospace_style ? monospace_style : "",
 		e_color_to_value (&efh->priv->colors[
 		EM_FORMAT_HTML_COLOR_BODY]));
 
 	camel_stream_write_string (stream, header, cancellable, NULL);
 	g_free (header);
 
+	if (monospace_style)
+		g_free (monospace_style);
+
+	if (variable_style)
+		g_free (variable_style);
+
 	if (info->mode == EM_FORMAT_WRITE_MODE_SOURCE) {
 
 		efh_write_source (emf, emf->mail_part_list->data,
@@ -1816,6 +1937,36 @@ efh_class_init (EMFormatHTMLClass *klass)
 			NULL,
 			FALSE,
 			G_PARAM_READWRITE));
+
+	g_object_class_install_property (
+		object_class,
+		PROP_MONOSPACE_FONT,
+		g_param_spec_string (
+			"monospace-font",
+			"Monospace font",
+			NULL,
+			NULL,
+			G_PARAM_READWRITE));
+
+	g_object_class_install_property (
+		object_class,
+		PROP_VARIABLE_FONT,
+		g_param_spec_string (
+			"variable-font",
+			"Variable font",
+			NULL,
+			NULL,
+			G_PARAM_READWRITE));
+
+	g_object_class_install_property (
+		object_class,
+		PROP_USE_CUSTOM_FONTS,
+		g_param_spec_boolean (
+			"use-custom-fonts",
+			"Use custm fonts",
+			NULL,
+			FALSE,
+			G_PARAM_READWRITE));
 }
 
 static void
@@ -2080,6 +2231,70 @@ em_format_html_set_animate_images (EMFormatHTML *efh,
 	g_object_notify (G_OBJECT (efh), "animate-images");
 }
 
+const gchar*
+em_format_html_get_monospace_font (EMFormatHTML* efh)
+{
+	g_return_val_if_fail (EM_IS_FORMAT_HTML (efh), NULL);
+
+	return efh->priv->monospace_font;
+}
+
+void
+em_format_html_set_monospace_font (EMFormatHTML* efh,
+				   const gchar* font)
+{
+	g_return_if_fail (EM_IS_FORMAT_HTML (efh));
+
+	if (efh->priv->monospace_font)
+		g_free (efh->priv->monospace_font);
+
+	efh->priv->monospace_font = g_strdup (font);
+
+	g_object_notify (G_OBJECT (efh), "monospace-font");
+}
+
+const gchar*
+em_format_html_get_variable_font(EMFormatHTML* efh)
+{
+	g_return_val_if_fail (EM_IS_FORMAT_HTML (efh), NULL);
+
+	return efh->priv->variable_font;
+}
+
+void
+em_format_html_set_variable_font(EMFormatHTML* efh,
+				 const gchar* font)
+{
+	g_return_if_fail (EM_IS_FORMAT_HTML (efh));
+
+	if (efh->priv->variable_font)
+		g_free (efh->priv->variable_font);
+
+	efh->priv->variable_font = g_strdup (font);
+
+	g_object_notify (G_OBJECT (efh), "variable-font");
+}
+
+gboolean
+em_format_html_get_use_custom_fonts (EMFormatHTML* efh)
+{
+	g_return_val_if_fail (EM_IS_FORMAT_HTML (efh), FALSE);
+
+	return efh->priv->use_custom_fonts;
+}
+
+void
+em_format_html_set_use_custom_fonts (EMFormatHTML* efh,
+				     gboolean use_custom_fonts)
+{
+	g_return_if_fail (EM_IS_FORMAT_HTML (efh));
+
+	efh->priv->use_custom_fonts = use_custom_fonts;
+
+	g_object_notify (G_OBJECT (efh), "use-custom-fonts");
+}
+
+
 CamelMimePart *
 em_format_html_file_part (EMFormatHTML *efh,
                           const gchar *mime_type,
diff --git a/mail/em-format-html.h b/mail/em-format-html.h
index 9749c37..203a76f 100644
--- a/mail/em-format-html.h
+++ b/mail/em-format-html.h
@@ -179,6 +179,24 @@ void		em_format_html_set_show_real_date
 						(EMFormatHTML *efh,
 						 gboolean show_real_date);
 
+void		em_format_html_set_monospace_font
+						(EMFormatHTML *efh,
+						 const gchar *font);
+const gchar*	em_format_html_get_monospace_font
+						(EMFormatHTML *efh);
+
+void		em_format_html_set_variable_font
+						(EMFormatHTML *efh,
+						 const gchar *font);
+const gchar*	em_format_html_get_variable_font
+						(EMFormatHTML *efh);
+
+void		em_format_html_set_use_custom_fonts
+						(EMFormatHTML *efh,
+						 gboolean use_custom_fonts);
+gboolean	em_format_html_get_use_custom_fonts
+						(EMFormatHTML *efh);
+
 /* retrieves a pseudo-part icon wrapper for a file */
 CamelMimePart *	em_format_html_file_part	(EMFormatHTML *efh,
 						 const gchar *mime_type,
diff --git a/modules/mail/e-mail-config-format-html.c b/modules/mail/e-mail-config-format-html.c
index dad5f9a..d0a9eb3 100644
--- a/modules/mail/e-mail-config-format-html.c
+++ b/modules/mail/e-mail-config-format-html.c
@@ -81,6 +81,21 @@ mail_config_format_html_constructed (GObject *object)
 		extensible, "animate-images",
 		G_BINDING_SYNC_CREATE);
 
+	g_object_bind_property (
+		shell_settings, "mail-font-monospace",
+		extensible, "monospace-font",
+		G_BINDING_SYNC_CREATE);
+
+	g_object_bind_property (
+		shell_settings, "mail-font-variable",
+		extensible, "variable-font",
+		G_BINDING_SYNC_CREATE);
+
+	g_object_bind_property (
+		shell_settings, "mail-use-custom-fonts",
+		extensible, "use-custom-fonts",
+		G_BINDING_SYNC_CREATE);
+
 	/* Chain up to parent's constructed() method. */
 	G_OBJECT_CLASS (parent_class)->constructed (object);
 }
diff --git a/modules/mail/e-mail-config-web-view.c b/modules/mail/e-mail-config-web-view.c
index 813256e..5dfcf44 100644
--- a/modules/mail/e-mail-config-web-view.c
+++ b/modules/mail/e-mail-config-web-view.c
@@ -28,7 +28,7 @@
 #include <libebackend/e-extension.h>
 
 #include <shell/e-shell.h>
-#include <misc/e-web-view.h>
+#include <misc/e-web-view-gtkhtml.h>
 
 typedef struct _EMailConfigWebView EMailConfigWebView;
 typedef struct _EMailConfigWebViewClass EMailConfigWebViewClass;
@@ -67,12 +67,7 @@ static void
 mail_config_web_view_load_style (EMailConfigWebView *extension)
 {
 	GString *buffer;
-	gchar *citation_color;
-	gchar *monospace_font;
 	gchar *spell_color;
-	gchar *variable_font;
-	gboolean custom_fonts;
-	gboolean mark_citations;
 	EExtensible *extensible;
 	GtkStyleContext *style_context;
 	GError *error = NULL;
@@ -81,43 +76,13 @@ mail_config_web_view_load_style (EMailConfigWebView *extension)
 	 * GtkHtml through style properties, unfortunately.  This builds
 	 * a style sheet for the EWebView using values from GConf. */
 
-	custom_fonts = e_shell_settings_get_boolean (
-		extension->shell_settings, "mail-use-custom-fonts");
-
-	monospace_font = e_shell_settings_get_string (
-		extension->shell_settings, "mail-font-monospace");
-
-	variable_font = e_shell_settings_get_string (
-		extension->shell_settings, "mail-font-variable");
-
-	mark_citations = e_shell_settings_get_boolean (
-		extension->shell_settings, "mail-mark-citations");
-
-	citation_color = e_shell_settings_get_string (
-		extension->shell_settings, "mail-citation-color");
-
 	spell_color = e_shell_settings_get_string (
 		extension->shell_settings, "composer-spell-color");
 
 	buffer = g_string_new ("EWebView {\n");
 
-	fix_color_string (citation_color);
 	fix_color_string (spell_color);
 
-	if (custom_fonts && variable_font != NULL)
-		g_string_append_printf (
-			buffer, "  font: %s;\n", variable_font);
-
-	if (custom_fonts && monospace_font != NULL)
-		g_string_append_printf (
-			buffer, "  -GtkHTML-fixed-font-name: '%s';\n",
-			monospace_font);
-
-	if (mark_citations && citation_color != NULL)
-		g_string_append_printf (
-			buffer, "  -GtkHTML-cite-color: %s;\n",
-			citation_color);
-
 	if (spell_color != NULL)
 		g_string_append_printf (
 			buffer, "  -GtkHTML-spell-error-color: %s;\n",
@@ -135,9 +100,6 @@ mail_config_web_view_load_style (EMailConfigWebView *extension)
 
 	g_string_free (buffer, TRUE);
 
-	g_free (monospace_font);
-	g_free (variable_font);
-	g_free (citation_color);
 	g_free (spell_color);
 
 	extensible = e_extension_get_extensible (E_EXTENSION (extension));
@@ -178,36 +140,6 @@ mail_config_web_view_realize (GtkWidget *widget,
 
 	g_signal_connect_swapped (
 		extension->shell_settings,
-		"notify::mail-use-custom-fonts",
-		G_CALLBACK (mail_config_web_view_load_style),
-		extension);
-
-	g_signal_connect_swapped (
-		extension->shell_settings,
-		"notify::mail-font-monospace",
-		G_CALLBACK (mail_config_web_view_load_style),
-		extension);
-
-	g_signal_connect_swapped (
-		extension->shell_settings,
-		"notify::mail-font-variable",
-		G_CALLBACK (mail_config_web_view_load_style),
-		extension);
-
-	g_signal_connect_swapped (
-		extension->shell_settings,
-		"notify::mail-mark-citations",
-		G_CALLBACK (mail_config_web_view_load_style),
-		extension);
-
-	g_signal_connect_swapped (
-		extension->shell_settings,
-		"notify::mail-citation-color",
-		G_CALLBACK (mail_config_web_view_load_style),
-		extension);
-
-	g_signal_connect_swapped (
-		extension->shell_settings,
 		"notify::composer-spell-color",
 		G_CALLBACK (mail_config_web_view_load_style),
 		extension);
@@ -279,9 +211,10 @@ mail_config_web_view_class_init (EMailConfigWebViewClass *class)
 	object_class->constructed = mail_config_web_view_constructed;
 
 	extension_class = E_EXTENSION_CLASS (class);
-	extension_class->extensible_type = E_TYPE_WEB_VIEW;
+	extension_class->extensible_type = E_TYPE_WEB_VIEW_GTKHTML;
 }
 
+
 void
 e_mail_config_web_view_register_type (GTypeModule *type_module)
 {
diff --git a/widgets/misc/e-web-view.c b/widgets/misc/e-web-view.c
index 5821875..481e55d 100644
--- a/widgets/misc/e-web-view.c
+++ b/widgets/misc/e-web-view.c
@@ -2794,21 +2794,47 @@ e_web_view_set_settings (EWebView *web_view,
 WebKitWebSettings *
 e_web_view_get_default_settings (GtkWidget *parent_widget)
 {
-	GtkStyleContext *context;
-	const PangoFontDescription *font;
+	PangoFontDescription *monospace, *variable, *min_size;
 	WebKitWebSettings *settings;
+	GSettings *g_settings;
+	gchar *monospace_font, *variable_font, *min_size_font;
+	gboolean use_custom_font;
+	
 
 	g_return_val_if_fail (GTK_IS_WIDGET (parent_widget), NULL);
 
 	settings = webkit_web_settings_new ();
 
-	/* Use same font-size as rest of Evolution */
-	context = gtk_widget_get_style_context (parent_widget);
-	font = gtk_style_context_get_font (context, GTK_STATE_FLAG_NORMAL);
+	g_settings = g_settings_new ("org.gnome.desktop.interface");
+	monospace_font = g_settings_get_string (g_settings, "monospace-font-name");
+	monospace = pango_font_description_from_string(monospace_font ? monospace_font : "monospace 10");
+	if (monospace_font)
+		g_free (monospace_font);
+
+	variable_font = g_settings_get_string (g_settings, "font-name");
+	variable = pango_font_description_from_string (variable_font ? variable_font : "serif 10");
+	if (variable_font)
+		g_free (variable_font);
+
+	g_object_unref (g_settings);
+
+	g_settings = g_settings_new ("org.gnome.evolution.mail");
+	use_custom_font = g_settings_get_boolean (g_settings, "use-custom-font");
+	if (use_custom_font) {
+		min_size_font = g_settings_get_string (g_settings, "monospace-font");
+		min_size = pango_font_description_from_string (min_size_font ? min_size_font : "monospace 10");
+		if (min_size_font)
+			g_free (min_size_font);
+	} else {
+		min_size = monospace;
+	}
 
 	g_object_set (G_OBJECT (settings),
-		"default-font-size", (pango_font_description_get_size (font) / PANGO_SCALE),
-		"default-monospace-font-size", (pango_font_description_get_size (font) / PANGO_SCALE),
+		"default-font-size", pango_font_description_get_size (variable) / PANGO_SCALE,
+		"default-font-family", pango_font_description_get_family (variable),
+		"monospace-font-family", pango_font_description_get_family (monospace),
+		"default-monospace-font-size", (pango_font_description_get_size (monospace) / PANGO_SCALE),
+		"minimum-font-size", (pango_font_description_get_size (min_size) / PANGO_SCALE),
 		"enable-frame-flattening", TRUE, 
 		"enable-java-applet", FALSE,
 		"enable-html5-database", FALSE,
@@ -2818,5 +2844,12 @@ e_web_view_get_default_settings (GtkWidget *parent_widget)
 		"enable-scripts", FALSE,
 		NULL);
 
+	if (monospace)
+		pango_font_description_free (monospace);
+	if (variable)
+		pango_font_description_free (variable);
+	if (use_custom_font && min_size)
+		pango_font_description_free (min_size);
+
 	return settings;
 }
