diff --git a/Modules/stdwinmodule.c b/Modules/stdwinmodule.c
index fb448f2..07bb866 100644
--- a/Modules/stdwinmodule.c
+++ b/Modules/stdwinmodule.c
@@ -314,6 +314,7 @@
 	INCREF(None);
 	return None;
 }
+
 static object *
 drawing_fillcircle(dp, args)
 	drawingobject *dp;
@@ -328,6 +329,19 @@
 }
 
 static object *
+drawing_xorcircle(dp, args)
+	drawingobject *dp;
+	object *args;
+{
+	int a[3];
+	if (!getpointintarg(args, a))
+		return NULL;
+	wxorcircle(a[0], a[1], a[2]);
+	INCREF(None);
+	return None;
+}
+
+static object *
 drawing_elarc(dp, args)
 	drawingobject *dp;
 	object *args;
@@ -354,6 +368,19 @@
 }
 
 static object *
+drawing_xorelarc(dp, args)
+	drawingobject *dp;
+	object *args;
+{
+	int a[6];
+	if (!get3pointarg(args, a))
+		return NULL;
+	wxorelarc(a[0], a[1], a[2], a[3], a[4], a[5]);
+	INCREF(None);
+	return None;
+}
+
+static object *
 drawing_box(dp, args)
 	drawingobject *dp;
 	object *args;
@@ -463,6 +490,21 @@
 }
 
 static object *
+drawing_xorpoly(dp, args)
+	drawingobject *dp;
+	object *args;
+{
+	int n;
+	POINT *points = getpointsarray(args, &n);
+	if (points == NULL)
+		return NULL;
+	wxorpoly(n, points);
+	DEL(points);
+	INCREF(None);
+	return None;
+}
+
+static object *
 drawing_cliprect(dp, args)
 	drawingobject *dp;
 	object *args;
@@ -665,8 +707,8 @@
 	{"cliprect",	drawing_cliprect},
 	{"elarc",	drawing_elarc},
 	{"erase",	drawing_erase},
-	{"fillelarc",	drawing_fillelarc},
 	{"fillcircle",	drawing_fillcircle},
+	{"fillelarc",	drawing_fillelarc},
 	{"fillpoly",	drawing_fillpoly},
 	{"invert",	drawing_invert},
 	{"line",	drawing_line},
@@ -675,7 +717,10 @@
 	{"poly",	drawing_poly},
 	{"shade",	drawing_shade},
 	{"text",	drawing_text},
+	{"xorcircle",	drawing_xorcircle},
+	{"xorelarc",	drawing_xorelarc},
 	{"xorline",	drawing_xorline},
+	{"xorpoly",	drawing_xorpoly},
 	
 	/* Text measuring methods: */
 	{"baseline",	drawing_baseline},
@@ -801,17 +846,9 @@
 	if (a[2] > right) a[2] = right;
 	if (a[3] > bottom) a[3] = bottom;
 	if (a[0] < a[2] && a[1] < a[3]) {
-		/* Hide/show focus around draw call; these are undocumented,
-		   but required here to get the highlighting correct.
-		   The call to werase is also required for this reason.
-		   Finally, this forces us to require (above) that we are NOT
-		   already drawing. */
-		tehidefocus(tp);
 		wbegindrawing(self->t_ref->w_win);
-		werase(a[0], a[1], a[2], a[3]);
 		tedrawnew(tp, a[0], a[1], a[2], a[3]);
 		wenddrawing(self->t_ref->w_win);
-		teshowfocus(tp);
 	}
 	INCREF(None);
 	return None;
