code: func drawPencil(canvas *xgraphics.Image, win *xwindow.Window, x, y int) {
  	// Create a subimage at (x, y) with pencilTip width and height from canvas.
  	// Creating subimages is very cheap---no pixels are copied.
  	// Moreover, when subimages are drawn to the screen, only the pixels in
  	// the sub-image are sent to X.
  	tipRect := midRect(x, y, pencilTip, pencilTip, width, height)
  
  	// If the rectangle contains no pixels, don't draw anything.
  	if tipRect.Empty() {
  		return
  	}
  
  	// Output a little message.
  	log.Printf("Drawing pencil point at (%d, %d)", x, y)
  
  	// Create the subimage of the canvas to draw to.
  	tip := canvas.SubImage(tipRect).(*xgraphics.Image)
  	fmt.Println(tip.Rect)
  
  	// Now color each pixel in tip with the pencil color.
  	tip.For(func(x, y int) xgraphics.BGRA {
  		return xgraphics.BlendBGRA(tip.At(x, y).(xgraphics.BGRA), pencil)
  	})
  
  	// Now draw the changes to the pixmap.
  	tip.XDraw()
  
  	// And paint them to the window.
  	tip.XPaint(win.Id)
  }
docs: // drawPencil takes an (x, y) position (from a MotionNotify event) and draws
  // a rectangle of size pencilTip on to canvas.