diff --git a/geometry.go b/geometry.go
index 1c61477c8f5e23f26085232c66bf53c84b223194..99514cc1cf80d2d83e5a33109af43b64e6785a31 100644
--- a/geometry.go
+++ b/geometry.go
@@ -268,12 +268,14 @@ func (r Rect) Union(s Rect) Rect {
 }
 
 // Intersect returns the maximal Rect which is covered by both r and s. Rects r and s must be normalized.
+//
+// If r and s don't overlap, this function returns R(0, 0, 0, 0).
 func (r Rect) Intersect(s Rect) Rect {
 	t := R(
-		math.Min(r.Max.X, s.Max.X),
-		math.Min(r.Max.Y, s.Max.Y),
 		math.Max(r.Min.X, s.Min.X),
 		math.Max(r.Min.Y, s.Min.Y),
+		math.Min(r.Max.X, s.Max.X),
+		math.Min(r.Max.Y, s.Max.Y),
 	)
 	if t.Min.X >= t.Max.X || t.Min.Y >= t.Max.Y {
 		return Rect{}