func (p *RGBA) Bounds() Rectangle { return p.Rect }
 
 func (p *RGBA) At(x, y int) Color {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return RGBAColor{}
        }
        return p.Pix[y*p.Stride+x]
 }
 
 func (p *RGBA) Set(x, y int, c Color) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = toRGBAColor(c).(RGBAColor)
 }
 
 func (p *RGBA) SetRGBA(x, y int, c RGBAColor) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = c
 func (p *RGBA64) Bounds() Rectangle { return p.Rect }
 
 func (p *RGBA64) At(x, y int) Color {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return RGBA64Color{}
        }
        return p.Pix[y*p.Stride+x]
 }
 
 func (p *RGBA64) Set(x, y int, c Color) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = toRGBA64Color(c).(RGBA64Color)
 }
 
 func (p *RGBA64) SetRGBA64(x, y int, c RGBA64Color) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = c
 func (p *NRGBA) Bounds() Rectangle { return p.Rect }
 
 func (p *NRGBA) At(x, y int) Color {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return NRGBAColor{}
        }
        return p.Pix[y*p.Stride+x]
 }
 
 func (p *NRGBA) Set(x, y int, c Color) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = toNRGBAColor(c).(NRGBAColor)
 }
 
 func (p *NRGBA) SetNRGBA(x, y int, c NRGBAColor) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = c
 func (p *NRGBA64) Bounds() Rectangle { return p.Rect }
 
 func (p *NRGBA64) At(x, y int) Color {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return NRGBA64Color{}
        }
        return p.Pix[y*p.Stride+x]
 }
 
 func (p *NRGBA64) Set(x, y int, c Color) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = toNRGBA64Color(c).(NRGBA64Color)
 }
 
 func (p *NRGBA64) SetNRGBA64(x, y int, c NRGBA64Color) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = c
 func (p *Alpha) Bounds() Rectangle { return p.Rect }
 
 func (p *Alpha) At(x, y int) Color {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return AlphaColor{}
        }
        return p.Pix[y*p.Stride+x]
 }
 
 func (p *Alpha) Set(x, y int, c Color) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = toAlphaColor(c).(AlphaColor)
 }
 
 func (p *Alpha) SetAlpha(x, y int, c AlphaColor) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = c
 func (p *Alpha16) Bounds() Rectangle { return p.Rect }
 
 func (p *Alpha16) At(x, y int) Color {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return Alpha16Color{}
        }
        return p.Pix[y*p.Stride+x]
 }
 
 func (p *Alpha16) Set(x, y int, c Color) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = toAlpha16Color(c).(Alpha16Color)
 }
 
 func (p *Alpha16) SetAlpha16(x, y int, c Alpha16Color) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = c
 func (p *Gray) Bounds() Rectangle { return p.Rect }
 
 func (p *Gray) At(x, y int) Color {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return GrayColor{}
        }
        return p.Pix[y*p.Stride+x]
 }
 
 func (p *Gray) Set(x, y int, c Color) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = toGrayColor(c).(GrayColor)
 }
 
 func (p *Gray) SetGray(x, y int, c GrayColor) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = c
 func (p *Gray16) Bounds() Rectangle { return p.Rect }
 
 func (p *Gray16) At(x, y int) Color {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return Gray16Color{}
        }
        return p.Pix[y*p.Stride+x]
 }
 
 func (p *Gray16) Set(x, y int, c Color) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = toGray16Color(c).(Gray16Color)
 }
 
 func (p *Gray16) SetGray16(x, y int, c Gray16Color) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = c
        if len(p.Palette) == 0 {
                return nil
        }
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return p.Palette[0]
        }
        return p.Palette[p.Pix[y*p.Stride+x]]
 }
 
 func (p *Paletted) ColorIndexAt(x, y int) uint8 {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return 0
        }
        return p.Pix[y*p.Stride+x]
 }
 
 func (p *Paletted) SetColorIndex(x, y int, index uint8) {
-       if !p.Rect.Contains(Point{x, y}) {
+       if !(Point{x, y}.In(p.Rect)) {
                return
        }
        p.Pix[y*p.Stride+x] = index