diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c
index f81afae..a30c7a5 100644
--- a/calendar/gui/e-day-view.c
+++ b/calendar/gui/e-day-view.c
@@ -1265,7 +1265,7 @@ e_day_view_on_canvas_realized (GtkWidget *widget,
 	GdkWindow *window;
 
 	window = gtk_layout_get_bin_window (GTK_LAYOUT (widget));
-	gdk_window_set_back_pixmap (window, NULL, FALSE);
+	gdk_window_set_background_pattern (window, NULL);
 }
 
 /**
diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c
index 1a40973..5b2bb33 100644
--- a/mail/em-folder-tree.c
+++ b/mail/em-folder-tree.c
@@ -1596,8 +1596,10 @@ tree_drag_begin (GtkWidget *widget,
 	EMFolderTreePrivate *priv = folder_tree->priv;
 	GtkTreeSelection *selection;
 	GtkTreeView *tree_view;
-	GdkColormap *colormap;
-	GdkPixmap *pixmap;
+//	deprecated in gtk3
+//	GdkColormap *colormap;
+//	GdkPixmap *pixmap;
+	cairo_surface_t *s;
 	GtkTreeModel *model;
 	GtkTreePath *path;
 	GtkTreeIter iter;
@@ -1610,9 +1612,9 @@ tree_drag_begin (GtkWidget *widget,
 	path = gtk_tree_model_get_path (model, &iter);
 	priv->drag_row = gtk_tree_row_reference_new (model, path);
 
-	pixmap = gtk_tree_view_create_row_drag_icon (tree_view, path);
-	colormap = gdk_drawable_get_colormap (pixmap);
-	gtk_drag_set_icon_pixmap (context, colormap, pixmap, NULL, 0, 0);
+	s = gtk_tree_view_create_row_drag_icon (tree_view, path);
+//	colormap = gdk_drawable_get_colormap (pixmap);
+	gtk_drag_set_icon_surface (context, s);
 
 	gtk_tree_path_free (path);
 }
diff --git a/widgets/table/e-table-field-chooser-item.c b/widgets/table/e-table-field-chooser-item.c
index 02c86b8..2004412 100644
--- a/widgets/table/e-table-field-chooser-item.c
+++ b/widgets/table/e-table-field-chooser-item.c
@@ -479,6 +479,9 @@ etfci_draw (GnomeCanvasItem *item,
 	gint row;
 	GtkStyle *style;
 	GtkStateType state;
+	cairo_t *cr;
+
+	cr = gdk_cairo_create (drawable);
 
 	if (etfci->combined_header == NULL)
 		return;
@@ -505,7 +508,7 @@ etfci_draw (GnomeCanvasItem *item,
 		if (y2 < y)
 			continue;
 
-		e_table_header_draw_button (drawable, ecol,
+		e_table_header_draw_button (cr, ecol,
 					    style, state,
 					    GTK_WIDGET (canvas),
 					    -x, y1 - y,
@@ -544,7 +547,12 @@ etfci_start_drag (ETableFieldChooserItem *etfci, GdkEvent *event, gdouble x, gdo
 	GtkStyle *style;
 	GtkStateType state;
 	ETableCol *ecol;
-	GdkPixmap *pixmap;
+	/*gtk3 Chenges*/
+//	GdkPixmap *pixmap;
+	cairo_surface_t *s;
+	GdkPixbuf *pixbuf;
+	cairo_t *cr;
+
 	gint drag_col;
 	gint button_height;
 
@@ -576,26 +584,32 @@ etfci_start_drag (ETableFieldChooserItem *etfci, GdkEvent *event, gdouble x, gdo
 
 	button_height = e_table_header_compute_height (ecol, widget);
 	window = gtk_widget_get_window (widget);
-	pixmap = gdk_pixmap_new (window, etfci->width, button_height, -1);
-
+//	gtk3 Changes
+//	pixmap = gdk_pixmap_new (window, etfci->width, button_height, -1);
+	s = cairo_image_surface_create (CAIRO_FORMAT_A1, etfci->width, button_height);
+	cr = cairo_create (s);
+	pixbuf = gdk_pixbuf_get_from_surface(s, 
+			0, 0, 
+			etfci->width, button_height);
+	
 	style = gtk_widget_get_style (widget);
 	state = gtk_widget_get_state (widget);
 
 	e_table_header_draw_button (
-		pixmap, ecol, style,
+		cr, ecol, style,
 		state, widget, 0, 0,
 		etfci->width, button_height,
 		etfci->width, button_height,
 		E_TABLE_COL_ARROW_NONE);
 
-	gtk_drag_set_icon_pixmap (
+	gtk_drag_set_icon_pixbuf(
 		context,
-		gdk_drawable_get_colormap (GDK_DRAWABLE (window)),
-		pixmap, NULL,
+		pixbuf,
 		etfci->width / 2,
 		button_height / 2);
 
-	g_object_unref (pixmap);
+	g_object_unref (pixbuf);
+	cairo_surface_destroy (s);
 	etfci->maybe_drag = FALSE;
 }
 
diff --git a/widgets/table/e-table-header-item.c b/widgets/table/e-table-header-item.c
index 28d53ce..172eaa4 100644
--- a/widgets/table/e-table-header-item.c
+++ b/widgets/table/e-table-header-item.c
@@ -457,24 +457,44 @@ static GtkWidget *
 make_shaped_window_from_xpm (const gchar **xpm)
 {
 	GdkPixbuf *pixbuf;
-	GdkPixmap *pixmap;
-	GdkBitmap *bitmap;
+	// Pixmap and bitmap are deprecated from gtk3
+	// Use pixbuf itself for getting the image
+	//GdkPixmap *pixmap;
+	//GdkBitmap *bitmap;
+	//Now use cairo for mask
+	cairo_surface_t *mask;
+	cairo_region_t *mask_region;
 	GtkWidget *win, *pix;
+	cairo_t *cr;
 
 	pixbuf = gdk_pixbuf_new_from_xpm_data (xpm);
-	gdk_pixbuf_render_pixmap_and_mask (pixbuf, &pixmap, &bitmap, 128);
-	g_object_unref (pixbuf);
+//	gdk_pixbuf_render_pixmap_and_mask (pixbuf, &pixmap, &bitmap, 128);
+	mask = cairo_image_surface_create (CAIRO_FORMAT_A1, 
+			gdk_pixbuf_get_width (pixbuf), 
+			gdk_pixbuf_get_height (pixbuf));
+	cr = cairo_create (mask);
+	gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
+	cairo_paint (cr);
+	cairo_destroy (cr);
+
+	mask_region = gdk_cairo_region_create_from_surface (mask);
+
+	cairo_region_translate (mask_region, 0,0);
 
 	win = gtk_window_new (GTK_WINDOW_POPUP);
 	gtk_window_set_type_hint (GTK_WINDOW (win), GDK_WINDOW_TYPE_HINT_NOTIFICATION);
 
-	pix = gtk_image_new_from_pixmap (pixmap, bitmap);
+	//pix = gtk_image_new_from_pixmap (pixmap, bitmap);
+	pix = gtk_image_new_from_pixbuf (pixbuf);
 	gtk_widget_realize (win);
 	gtk_container_add (GTK_CONTAINER (win), pix);
-	gtk_widget_shape_combine_mask (win, bitmap, 0, 0);
+	gtk_widget_shape_combine_region (win, mask_region);
 
-	g_object_unref (pixmap);
-	g_object_unref (bitmap);
+	g_object_unref (pixbuf);
+	cairo_region_destroy (mask_region);
+	cairo_surface_destroy (mask);
+	//g_object_unref (pixmap);
+	//g_object_unref (bitmap);
 
 	return win;
 }
@@ -1179,7 +1199,12 @@ ethi_start_drag (ETableHeaderItem *ethi, GdkEvent *event)
 	GdkDragContext *context;
 	ETableCol *ecol;
 	gint col_width;
-	GdkPixmap *pixmap;
+	//Use Cairo_surface_t from gtk3 onwards
+	//GdkPixmap *pixmap;
+	cairo_surface_t *s;
+	GdkPixbuf *pixbuf;
+	cairo_t *cr;
+
 	gint group_indent = 0;
 	GHashTable *arrows = g_hash_table_new (NULL, NULL);
 	GtkStateType state;
@@ -1239,26 +1264,32 @@ ethi_start_drag (ETableHeaderItem *ethi, GdkEvent *event)
 
 	ecol = e_table_header_get_column (ethi->eth, ethi->drag_col);
 	col_width = ecol->width;
-	pixmap = gdk_pixmap_new (window, col_width, ethi->height, -1);
+	//gtk3 changes
+	//pixmap = gdk_pixmap_new (window, col_width, ethi->height, -1);
+	s = cairo_image_surface_create (CAIRO_FORMAT_A1, col_width, ethi->height);
+	cr = cairo_create (s);
+	pixbuf = gdk_pixbuf_get_from_surface(s, 
+			0, 0, 
+			col_width, ethi->height);
 
 	state = gtk_widget_get_state (widget);
 
 	e_table_header_draw_button (
-		pixmap, ecol,
+		cr, ecol,
 		style, state,
 		widget, 0, 0,
 		col_width, ethi->height,
 		col_width, ethi->height,
 		(ETableColArrow) g_hash_table_lookup (
 			arrows, GINT_TO_POINTER (ecol->col_idx)));
-	gtk_drag_set_icon_pixmap (
+	gtk_drag_set_icon_pixbuf (
 		context,
-		gdk_drawable_get_colormap (GDK_DRAWABLE (window)),
-		pixmap,
-		NULL,
+		pixbuf,
 		col_width / 2,
 		ethi->height / 2);
-	g_object_unref (pixmap);
+	//g_object_unref (pixmap);
+	g_object_unref (pixbuf);
+	cairo_surface_destroy (s);
 
 	ethi->maybe_drag = FALSE;
 	g_hash_table_destroy (arrows);
diff --git a/widgets/table/e-table-header-utils.c b/widgets/table/e-table-header-utils.c
index 56fa44a..f7c12bc 100644
--- a/widgets/table/e-table-header-utils.c
+++ b/widgets/table/e-table-header-utils.c
@@ -237,7 +237,7 @@ make_composite_pixmap (GdkDrawable *drawable, GdkGC *gc,
  * Draws a button suitable for a table header.
  **/
 void
-e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
+e_table_header_draw_button (cairo_t *cr, ETableCol *ecol,
 			    GtkStyle *style, GtkStateType state,
 			    GtkWidget *widget,
 			    gint x, gint y, gint width, gint height,
@@ -249,10 +249,10 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 	gint inner_width, inner_height;
 	gint arrow_width = 0, arrow_height = 0;
 	PangoLayout *layout;
-        cairo_t *cr;
+        //cairo_t *cr;
 	static gpointer g_label = NULL;
 
-	g_return_if_fail (drawable != NULL);
+	g_return_if_fail (cr != NULL);
 	g_return_if_fail (ecol != NULL);
 	g_return_if_fail (E_IS_TABLE_COL (ecol));
 	g_return_if_fail (style != NULL);
@@ -272,7 +272,7 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 		gtk_widget_realize (g_label);
 	}
 
-        cr = gdk_cairo_create (drawable);
+//        cr = gdk_cairo_create (drawable);
 
         gdk_cairo_set_source_color (cr, &gtk_widget_get_style (GTK_WIDGET (g_label))->fg[state]);
 
@@ -281,8 +281,8 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 
 	/* Button bevel */
 
-	gtk_paint_box (style, drawable, state, GTK_SHADOW_OUT,
-		       NULL, widget, "button",
+	gtk_paint_box (style, cr, state, GTK_SHADOW_OUT,
+		       widget, "button",
 		       x, y, button_width, button_height);
 
 	/* Inside area */
@@ -397,8 +397,8 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 		if (ecol->icon_name == NULL)
 			inner_width += arrow_width + HEADER_PADDING;
 
-		gtk_paint_arrow (style, drawable, state,
-				 GTK_SHADOW_NONE, NULL, widget, "header",
+		gtk_paint_arrow (style, cr, state,
+				 GTK_SHADOW_NONE, widget, "header",
 				 (arrow == E_TABLE_COL_ARROW_UP) ? GTK_ARROW_UP : GTK_ARROW_DOWN,
 				 (ecol->icon_name == NULL),
 				 inner_x + inner_width - arrow_width,
diff --git a/widgets/table/e-table-header-utils.h b/widgets/table/e-table-header-utils.h
index 9117262..2a431dd 100644
--- a/widgets/table/e-table-header-utils.h
+++ b/widgets/table/e-table-header-utils.h
@@ -33,7 +33,7 @@ G_BEGIN_DECLS
 gdouble  e_table_header_compute_height (ETableCol *ecol,
 				       GtkWidget *widget);
 gdouble  e_table_header_width_extras    (GtkStyle       *style);
-void    e_table_header_draw_button     (GdkDrawable    *drawable,
+void    e_table_header_draw_button     (cairo_t        *cr,
 					ETableCol      *ecol,
 					GtkStyle       *style,
 					GtkStateType    state,
diff --git a/widgets/table/e-table-item.c b/widgets/table/e-table-item.c
index 7c45bbe..17ad35a 100644
--- a/widgets/table/e-table-item.c
+++ b/widgets/table/e-table-item.c
@@ -271,8 +271,9 @@ eti_get_cell_background_color (ETableItem *eti, gint row, gint col, gboolean sel
 	if (color_spec != NULL) {
 		if (gdk_color_parse (color_spec, &bg)) {
 			background = gdk_color_copy (&bg);
-			gdk_colormap_alloc_color (gtk_widget_get_colormap (canvas), background,
-						  FALSE, TRUE);
+			/*No Need to allocate color anymore from gtk3
+			 * gdk_colormap_alloc_color (gtk_widget_get_colormap (canvas), background,
+						  FALSE, TRUE);*/
 			allocated = TRUE;
 		}
 	}
@@ -286,8 +287,9 @@ eti_get_cell_background_color (ETableItem *eti, gint row, gint col, gboolean sel
 				allocated = TRUE;
 			}
 			e_hsv_tweak (background, 0.0f, 0.0f, -0.07f);
-			gdk_colormap_alloc_color (gtk_widget_get_colormap (canvas), background,
-						  FALSE, TRUE);
+			/*No need to allocate color any more from gtk3
+			 * gdk_colormap_alloc_color (gtk_widget_get_colormap (canvas), background,
+						  FALSE, TRUE);*/
 		}
 	}
 	if (allocatedp)
@@ -1958,7 +1960,7 @@ eti_draw (GnomeCanvasItem *item, GdkDrawable *drawable, gint x, gint y, gint wid
 				break;
 			}
 
-			e_cell_draw (ecell_view, drawable, ecol->col_idx, col, row, flags,
+			e_cell_draw (ecell_view, cr, ecol->col_idx, col, row, flags,
 				     xd, yd, xd + ecol->width, yd + height);
 
 			if (!f_found && !selected) {
diff --git a/widgets/table/e-table.c b/widgets/table/e-table.c
index 4cbd655..00cd7f7 100644
--- a/widgets/table/e-table.c
+++ b/widgets/table/e-table.c
@@ -2585,9 +2585,10 @@ struct _ETableDragSourceSite
 	GdkModifierType    start_button_mask;
 	GtkTargetList     *target_list;        /* Targets for drag data */
 	GdkDragAction      actions;            /* Possible actions */
-	GdkColormap       *colormap;		 /* Colormap for drag icon */
-	GdkPixmap         *pixmap;             /* Icon for drag data */
-	GdkBitmap         *mask;
+	GdkPixbuf         *pixbuf;             /* Icon for drag data */
+//	GdkColormap       *colormap;		 /* Colormap for drag icon */
+//	GdkPixmap         *pixmap;             /* Icon for drag data */
+//	GdkBitmap         *mask;
 
 	/* Stored button press information to detect drag beginning */
 	gint               state;
@@ -2824,11 +2825,10 @@ et_real_start_drag (ETable *table, gint row, gint col, GdkEvent *event)
 			info = g_dataset_get_data (context, "gtk-info");
 
 			if (info && !info->icon_window) {
-				if (site->pixmap)
-					gtk_drag_set_icon_pixmap (context,
-								  site->colormap,
-								  site->pixmap,
-								  site->mask, -2, -2);
+				if (site->pixbuf)
+					gtk_drag_set_icon_pixbuf (context,
+								  site->pixbuf,
+								  -2, -2);
 				else
 					gtk_drag_set_icon_default (context);
 			}
@@ -3469,14 +3469,14 @@ e_table_class_init (ETableClass *class)
 
 	class->set_scroll_adjustments = set_scroll_adjustments;
 
-	widget_class->set_scroll_adjustments_signal =
+	/*widget_class->set_scroll_adjustments_signal =
 		g_signal_new ("set_scroll_adjustments",
 			      G_OBJECT_CLASS_TYPE (object_class),
 			      G_SIGNAL_RUN_LAST,
 			      G_STRUCT_OFFSET (ETableClass, set_scroll_adjustments),
 			      NULL, NULL,
 			      e_marshal_NONE__OBJECT_OBJECT,
-			      G_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
+			      G_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);*/
 
 	g_object_class_install_property (object_class, PROP_LENGTH_THRESHOLD,
 					 g_param_spec_int ("length_threshold",
diff --git a/widgets/table/e-tree.c b/widgets/table/e-tree.c
index 5f0effa..281a746 100644
--- a/widgets/table/e-tree.c
+++ b/widgets/table/e-tree.c
@@ -2388,9 +2388,10 @@ struct _ETreeDragSourceSite
 	GdkModifierType    start_button_mask;
 	GtkTargetList     *target_list;        /* Targets for drag data */
 	GdkDragAction      actions;            /* Possible actions */
-	GdkColormap       *colormap;		 /* Colormap for drag icon */
-	GdkPixmap         *pixmap;             /* Icon for drag data */
-	GdkBitmap         *mask;
+	GdkPixbuf         *pixbuf;             /* Icon for drag data */
+//	GdkColormap       *colormap;		 /* Colormap for drag icon */
+//	GdkPixmap         *pixmap;             /* Icon for drag data */
+//	GdkBitmap         *mask;
 
 	/* Stored button press information to detect drag beginning */
 	gint               state;
@@ -2611,11 +2612,10 @@ et_real_start_drag (ETree *tree, gint row, ETreePath path, gint col, GdkEvent *e
 			info = g_dataset_get_data (context, "gtk-info");
 
 			if (info && !info->icon_window) {
-				if (site->pixmap)
-					gtk_drag_set_icon_pixmap (context,
-								  site->colormap,
-								  site->pixmap,
-								  site->mask, -2, -2);
+				if (site->pixbuf)
+					gtk_drag_set_icon_pixbuf (context,
+								  site->pixbuf,
+								  -2, -2);
 				else
 					gtk_drag_set_icon_default (context);
 			}
@@ -3517,7 +3517,7 @@ e_tree_class_init (ETreeClass *class)
 			      G_TYPE_UINT,
 			      G_TYPE_UINT);
 
-	class->set_scroll_adjustments = set_scroll_adjustments;
+	/*class->set_scroll_adjustments = set_scroll_adjustments;
 
 	widget_class->set_scroll_adjustments_signal =
 		g_signal_new ("set_scroll_adjustments",
@@ -3527,7 +3527,7 @@ e_tree_class_init (ETreeClass *class)
 			      NULL, NULL,
 			      e_marshal_NONE__OBJECT_OBJECT,
 			      G_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT,
-			      GTK_TYPE_ADJUSTMENT);
+			      GTK_TYPE_ADJUSTMENT);*/
 
 	g_object_class_install_property (object_class, PROP_LENGTH_THRESHOLD,
 					 g_param_spec_int ("length_threshold",
