Index: legend.py
===================================================================
--- legend.py	(revision 5477)
+++ legend.py	(working copy)
@@ -241,23 +241,32 @@
         for handle, label in zip(handles, texts):
             if self.numpoints > 1:
                 xdata = np.linspace(left, left + self.handlelen, self.numpoints)
+                xdata_marker = xdata
             elif self.numpoints == 1:
                 xdata = np.linspace(left, left + self.handlelen, 2)
+                xdata_marker = [left + 0.5*self.handlelen]
 
             x, y = label.get_position()
             x -= self.handlelen + self.handletextsep
             if isinstance(handle, Line2D):
-                if self.numpoints == 1 and handle._marker != 'None':
-                    xdata = np.array([left + self.handlelen*0.5])
                 ydata = (y-HEIGHT/2)*np.ones(xdata.shape, float)
                 legline = Line2D(xdata, ydata)
+
                 legline.update_from(handle)
                 self._set_artist_props(legline) # after update
                 legline.set_clip_box(None)
                 legline.set_clip_path(None)
-                legline.set_markersize(self.markerscale*legline.get_markersize())
+                ret.append(legline)
 
-                ret.append(legline)
+                legline_marker = Line2D(xdata_marker, ydata[:len(xdata_marker)])
+                legline_marker.update_from(handle)
+                self._set_artist_props(legline_marker)
+                ret.append(legline_marker)
+
+                legline_marker.set_markersize(self.markerscale * \
+                                              legline_marker.get_markersize())
+                legline.set_markersize(0)
+
             elif isinstance(handle, Patch):
                 p = Rectangle(xy=(min(xdata), y-3/4*HEIGHT),
                               width = self.handlelen, height=HEIGHT/2,
