diff --git a/draw/draw.go b/draw/draw.go
index dfaa7fc..cd5aaba 100644
--- a/draw/draw.go
+++ b/draw/draw.go
@@ -11,9 +11,8 @@
 // package in the standard library.
 package draw
 
-// This file, and the go1_*.go files, just contains the API exported by the
-// image/draw package in the standard library. Other files in this package
-// provide additional features.
+// This file just contains the API exported by the image/draw package in the
+// standard library. Other files in this package provide additional features.
 
 import (
 	"image"
@@ -32,6 +31,9 @@
 	draw.DrawMask(dst, r, src, sp, mask, mp, draw.Op(op))
 }
 
+// Drawer contains the Draw method.
+type Drawer = draw.Drawer
+
 // FloydSteinberg is a Drawer that is the Src Op with Floyd-Steinberg error
 // diffusion.
 var FloydSteinberg Drawer = floydSteinberg{}
@@ -41,3 +43,19 @@
 func (floydSteinberg) Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point) {
 	draw.FloydSteinberg.Draw(dst, r, src, sp)
 }
+
+// Image is an image.Image with a Set method to change a single pixel.
+type Image = draw.Image
+
+// Op is a Porter-Duff compositing operator.
+type Op = draw.Op
+
+const (
+	// Over specifies ``(src in mask) over dst''.
+	Over Op = draw.Over
+	// Src specifies ``src in mask''.
+	Src Op = draw.Src
+)
+
+// Quantizer produces a palette for an image.
+type Quantizer = draw.Quantizer
diff --git a/draw/go1_8.go b/draw/go1_8.go
deleted file mode 100644
index ec192b7..0000000
--- a/draw/go1_8.go
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !go1.9,!go1.8.typealias
-
-package draw
-
-import (
-	"image"
-	"image/color"
-	"image/draw"
-)
-
-// Drawer contains the Draw method.
-type Drawer interface {
-	// Draw aligns r.Min in dst with sp in src and then replaces the
-	// rectangle r in dst with the result of drawing src on dst.
-	Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point)
-}
-
-// Image is an image.Image with a Set method to change a single pixel.
-type Image interface {
-	image.Image
-	Set(x, y int, c color.Color)
-}
-
-// Op is a Porter-Duff compositing operator.
-type Op int
-
-const (
-	// Over specifies ``(src in mask) over dst''.
-	Over Op = Op(draw.Over)
-	// Src specifies ``src in mask''.
-	Src Op = Op(draw.Src)
-)
-
-// Draw implements the Drawer interface by calling the Draw function with
-// this Op.
-func (op Op) Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point) {
-	(draw.Op(op)).Draw(dst, r, src, sp)
-}
-
-// Quantizer produces a palette for an image.
-type Quantizer interface {
-	// Quantize appends up to cap(p) - len(p) colors to p and returns the
-	// updated palette suitable for converting m to a paletted image.
-	Quantize(p color.Palette, m image.Image) color.Palette
-}
diff --git a/draw/go1_9.go b/draw/go1_9.go
deleted file mode 100644
index fc548e9..0000000
--- a/draw/go1_9.go
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build go1.9 go1.8.typealias
-
-package draw
-
-import (
-	"image/draw"
-)
-
-// We use type aliases (new in Go 1.9) for the exported names from the standard
-// library's image/draw package. This is not merely syntactic sugar for
-//
-//	type Drawer draw.Drawer
-//
-// as aliasing means that the types in this package, such as draw.Image and
-// draw.Op, are identical to the corresponding draw.Image and draw.Op types in
-// the standard library. In comparison, prior to Go 1.9, the code in go1_8.go
-// defines new types that mimic the old but are different types.
-//
-// The package documentation, in draw.go, explicitly gives the intent of this
-// package:
-//
-//	This package is a superset of and a drop-in replacement for the
-//	image/draw package in the standard library.
-//
-// Drop-in replacement means that I can replace all of my "image/draw" imports
-// with "golang.org/x/image/draw", to access additional features in this
-// package, and no further changes are required. That's mostly true, but not
-// completely true unless we use type aliases.
-//
-// Without type aliases, users might need to import both "image/draw" and
-// "golang.org/x/image/draw" in order to convert from two conceptually
-// equivalent but different (from the compiler's point of view) types, such as
-// from one draw.Op type to another draw.Op type, to satisfy some other
-// interface or function signature.
-
-// Drawer contains the Draw method.
-type Drawer = draw.Drawer
-
-// Image is an image.Image with a Set method to change a single pixel.
-type Image = draw.Image
-
-// Op is a Porter-Duff compositing operator.
-type Op = draw.Op
-
-const (
-	// Over specifies ``(src in mask) over dst''.
-	Over Op = draw.Over
-	// Src specifies ``src in mask''.
-	Src Op = draw.Src
-)
-
-// Quantizer produces a palette for an image.
-type Quantizer = draw.Quantizer
diff --git a/draw/scale_test.go b/draw/scale_test.go
index ea41940..042a82d 100644
--- a/draw/scale_test.go
+++ b/draw/scale_test.go
@@ -519,9 +519,7 @@
 		for _, dstMaskP := range dstMaskPs {
 			dstInside := mk(q, nil, image.Point{})
 			for _, wrap := range []bool{false, true} {
-				// TODO: replace "rectImage(rect)" with "rect" once Go 1.5 is
-				// released, where an image.Rectangle implements image.Image.
-				dstMask := image.Image(rectImage(rect))
+				dstMask := image.Image(rect)
 				if wrap {
 					dstMask = srcWrapper{dstMask}
 				}
@@ -562,19 +560,6 @@
 	})
 }
 
-// TODO: delete this wrapper type once Go 1.5 is released, where an
-// image.Rectangle implements image.Image.
-type rectImage image.Rectangle
-
-func (r rectImage) ColorModel() color.Model { return color.Alpha16Model }
-func (r rectImage) Bounds() image.Rectangle { return image.Rectangle(r) }
-func (r rectImage) At(x, y int) color.Color {
-	if (image.Point{x, y}).In(image.Rectangle(r)) {
-		return color.Opaque
-	}
-	return color.Transparent
-}
-
 // The fooWrapper types wrap the dst or src image to avoid triggering the
 // type-specific fast path implementations.
 type (
diff --git a/draw/stdlib_test.go b/draw/stdlib_test.go
index 9015bfd..7ee8770 100644
--- a/draw/stdlib_test.go
+++ b/draw/stdlib_test.go
@@ -2,15 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build go1.9
-
 package draw
 
-// This file contains tests that depend on the exact behavior of the
-// image/color package in the standard library. The color conversion formula
-// from YCbCr to RGBA changed between Go 1.4 and Go 1.5, and between Go 1.8 and
-// Go 1.9, so this file's tests are only enabled for Go 1.9 and above.
-
 import (
 	"bytes"
 	"image"
