diff --git a/app/utils/rectangle.js b/app/utils/rectangle.js
index e017485a3f8b9aefcfe498c2c4338f87ec729e5a..dc789f1d8b7d68e41d59b65a4bfa91ae4dcb189a 100644
--- a/app/utils/rectangle.js
+++ b/app/utils/rectangle.js
@@ -17,7 +17,8 @@ export default class Rectangle {
 
   intersect(rect) {
     /*
-    Returns true if this rectangle intersects with rect.
+    Returns true if this rectangle intersects with rect
+    (or other way around).
     Two rectangle intersect if one of them has a point inside other.
     */
     if (this.contains_point(rect.p1)) {
@@ -36,6 +37,23 @@ export default class Rectangle {
       return true;
     }
 
+    // or other way around
+    if (rect.contains_point(this.p1)) {
+      return true;
+    }
+
+    if (rect.contains_point(this.p2)) {
+      return true;
+    }
+
+    if (rect.contains_point(this.p3)) {
+      return true;
+    }
+
+    if (rect.contains_point(this.p4)) {
+      return true;
+    }
+
     return false;
   }
 
diff --git a/tests/unit/rectangle-test.js b/tests/unit/rectangle-test.js
index c6ccd2c67df1cbdfe98bc258f35a1c1d32b97ac5..798432ff70f6a49b47dc0f24b33f5eb3cc01bc83 100644
--- a/tests/unit/rectangle-test.js
+++ b/tests/unit/rectangle-test.js
@@ -53,5 +53,35 @@ module('Unit | Rectangle', function () {
       rect.p4.isEqual(new Point(100, 205))
     );
   });
+
+  test('instersect positive', function(assert) {
+    let rect1, rect2;
+
+    rect1 = new Rectangle(100, 100, 20, 20);
+    rect2 = new Rectangle(110, 90, 5, 25);
+
+    assert.true(
+      rect1.intersect(rect2)
+    );
+
+    assert.true(
+      rect2.intersect(rect1)
+    );
+  });
+
+  test('instersect negative', function(assert) {
+    let rect1, rect2;
+
+    rect1 = new Rectangle(100, 100, 20, 20);
+    rect2 = new Rectangle(10, 10, 15, 15);
+
+    assert.false(
+      rect1.intersect(rect2)
+    );
+
+    assert.false(
+      rect2.intersect(rect1)
+    );
+  });
 });