diff --git a/src/data/coords/ellipseCoords.ts b/src/data/coords/ellipseCoords.ts
index e285bd37ee67eec74c09e289d0501915ad837b0d..92025155237baa53cb102272e3c9f6463ad235f1 100644
--- a/src/data/coords/ellipseCoords.ts
+++ b/src/data/coords/ellipseCoords.ts
@@ -6,7 +6,7 @@ import * as paper from "paper";
 
 export class EllipseCoords implements Coords {
 
-    public constructor(public center : paper.Point, public radiusX : number, public radiusY : number, public angle : number) {
+    public constructor(public center : paper.Point, public radiusX : number, public radiusY : number, public angle : number = 0) {
     }
 
     bounds(): paper.Rectangle {
@@ -14,13 +14,14 @@ export class EllipseCoords implements Coords {
     }
 
     toPath(): paper.Path {
-        let fittingEllipse = new paper.Path.Ellipse(new paper.Rectangle(
+        let path = new paper.Path.Ellipse(new paper.Rectangle(
                 new paper.Point(this.center.x - this.radiusX, this.center.y - this.radiusY),
                 new paper.Size(2 * this.radiusX, 2 * this.radiusY)
             )
         );
-        fittingEllipse.rotate(-this.angle);
-        return fittingEllipse;
+        path.rotate(this.angle);
+        path.remove();
+        return path;
     }
 
     /**
diff --git a/src/instruments/petriDish.ts b/src/instruments/petriDish.ts
index 7b2e2f38f9c98649ab190bb2d8ba08c1a4c7d73c..197e49b9d1ca2bd5f6f43b085790ecca9c7fc933 100644
--- a/src/instruments/petriDish.ts
+++ b/src/instruments/petriDish.ts
@@ -2,13 +2,14 @@ import * as paper from "paper";
 import {AbstractInstrument, Handle, Instrument} from "./instrument";
 import {CircleCoords} from "../data/coords/circleCoords";
 import {Lab} from "../lab";
+import {EllipseCoords} from "../data/coords/ellipseCoords";
 
 /**
  * Représente la boîte de Petri
  */
-export class PetriDish extends AbstractInstrument<CircleCoords> implements Instrument {
+export class PetriDish extends AbstractInstrument<EllipseCoords> implements Instrument {
 
-    public constructor(protected lab : Lab, coords : CircleCoords) {
+    public constructor(protected lab : Lab, coords : EllipseCoords) {
         super(lab, coords, [
             new Handle("rightHandle", true),
             new Handle("bottomHandle", true),
@@ -16,11 +17,11 @@ export class PetriDish extends AbstractInstrument<CircleCoords> implements Instr
         ])
     }
 
-    drawIn(coords : CircleCoords, group: paper.Group) {
-        group.addChild(new paper.Path.Circle(coords.center, coords.radius));
+    drawIn(coords : EllipseCoords, group: paper.Group) {
+        group.addChild(coords.toPath());
     }
 
-    onHandleMove(coords: CircleCoords, handle: Handle, point: paper.Point, delta: paper.Point): void {
+    onHandleMove(coords: EllipseCoords, handle: Handle, point: paper.Point, delta: paper.Point): void {
         switch (handle.name) {
             case "centerHandle" :
                 coords.center = coords.center.add(delta);
@@ -28,34 +29,34 @@ export class PetriDish extends AbstractInstrument<CircleCoords> implements Instr
 
             case "rightHandle":
                 let newRadiusX = point.x - coords.center.x;
-                let deltaRadiusX = newRadiusX - coords.radius;
+                let deltaRadiusX = newRadiusX - coords.radiusX;
                 if(newRadiusX > 10) {
-                    coords.radius = coords.radius + deltaRadiusX / 2;
-                    coords.center = coords.center.add(new paper.Point(deltaRadiusX, 0));
+                    coords.radiusX = coords.radiusX + deltaRadiusX / 2;
+                    coords.center = coords.center.add(new paper.Point(deltaRadiusX / 2, 0));
                 }
                 break;
 
             case "bottomHandle":
                 let newRadiusY = point.y - coords.center.y;
-                let deltaRadiusY = newRadiusY - coords.radius;
+                let deltaRadiusY = newRadiusY - coords.radiusY;
                 if(newRadiusY > 10) {
-                    coords.radius = coords.radius + deltaRadiusY / 2;
-                    coords.center = coords.center.add(new paper.Point(0, deltaRadiusY));
+                    coords.radiusY = coords.radiusY + deltaRadiusY / 2;
+                    coords.center = coords.center.add(new paper.Point(0, deltaRadiusY / 2));
                 }
                 break;
         }
     }
 
-    locateHandle(coords: CircleCoords, handle: Handle): paper.Point {
+    locateHandle(coords: EllipseCoords, handle: Handle): paper.Point {
         switch (handle.name) {
             case "centerHandle" :
                 return coords.center;
 
             case "rightHandle":
-                return coords.center.add(new paper.Point(coords.radius, 0));
+                return coords.center.add(new paper.Point(coords.radiusX, 0));
 
             case "bottomHandle":
-                return coords.center.add(new paper.Point(0, coords.radius));
+                return coords.center.add(new paper.Point(0, coords.radiusY));
 
             default:
                 throw new Error("Unknown handle");
diff --git a/src/lab.tsx b/src/lab.tsx
index d9190bcd3efe45a2402140e38a0e59acd2e15c69..59ad974bd74a0b1cfe36e16026194b370fc729cf 100644
--- a/src/lab.tsx
+++ b/src/lab.tsx
@@ -14,6 +14,7 @@ import {CircleCoords} from "./data/coords/circleCoords";
 import {PathCoords} from "./data/coords/pathCoords";
 import {DownloadStep} from "./steps/downloadStep";
 import {PaperUtils} from "./utils/paperUtils";
+import {EllipseCoords} from "./data/coords/ellipseCoords";
 
 export interface LabData {
 
@@ -25,7 +26,7 @@ export interface LabData {
 
     rulerCoords : VectorCoords,
 
-    petriDishCoords : CircleCoords,
+    petriDishCoords : EllipseCoords,
 
     blobMaskCoords : PathCoords
 }
@@ -148,7 +149,7 @@ export class Lab extends React.Component<{}> {
 
             rulerCoords: new VectorCoords(new paper.Point(width * 0.25, height / 2), new paper.Point(width * 0.75, height / 2)),
 
-            petriDishCoords: new CircleCoords(new paper.Point(width / 2, height / 2), width * 0.75 / 2),
+            petriDishCoords: new EllipseCoords(new paper.Point(width / 2, height / 2), width * 0.75 / 2, width * 0.75 / 2, 0),
 
             blobMaskCoords: new PathCoords(new paper.Path()),