diff --git a/src/app/cpp/camera-drawing-area.cpp b/src/app/cpp/camera-drawing-area.cpp
index 3b01bac..021d8b1 100644
--- a/src/app/cpp/camera-drawing-area.cpp
+++ b/src/app/cpp/camera-drawing-area.cpp
@@ -7,6 +7,8 @@
 
 #include <opencv2/imgproc.hpp>
 
+#include <math.h>
+
 CameraDrawingArea::CameraDrawingArea():
 dispatchInvalidate(),
 movieMaker(ServiceLocator::getMovieMaker()),
@@ -17,7 +19,7 @@ captureImageFromCamera(ServiceLocator::getCaptureImageFromCamera()){
     fontDescription.set_size(10 * Pango::SCALE);
 
     dispatchInvalidate.
-        connect(sigc::mem_fun(*this, 
+        connect(sigc::mem_fun(*this,
                     &CameraDrawingArea::doInvalidate));
     eventBus.subscribe(this);
 }
@@ -28,7 +30,11 @@ CameraDrawingArea::~CameraDrawingArea() {
 
 void CameraDrawingArea::receive(EventOrangeDetected e) {
     if (width > 0 && height > 0) {
-        resize(e.getCapturedImage(), output, cv::Size(width, height), 0, 0, cv::INTER_LINEAR);
+        // Resize captured image without changing its aspect:
+        cv::Mat capturedImage = e.getCapturedImage();
+        double capturedImageWidth = capturedImage.size().width;
+        double scale = width / capturedImageWidth;
+        resize(capturedImage, output, cv::Size(), scale, scale, cv::INTER_LINEAR);
 
         // Initializes a pixbuf sharing the same data as the mat:
         std::lock_guard<std::mutex> guard(pixbufMutex);
@@ -40,7 +46,10 @@ void CameraDrawingArea::receive(EventOrangeDetected e) {
                 output.cols,
                 output.rows,
                 (int) output.step);
-
+        
+        // Remember the event for later.
+        lastDetectedOrange = e;
+        
         // Invalidate the window, but for that we need to be in the GUI thread.
         dispatchInvalidate.emit();
 	}
@@ -64,12 +73,25 @@ bool CameraDrawingArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) {
         displayRec(cr);
     }
 
+    highlightOrange(cr);
     displayCaptureRate(cr, captureImageFromCamera->getCaptureRate());
     displayFrameRate(cr, captureImageFromCamera->getFrameRate());
 
     return true;
 }
 
+void CameraDrawingArea::highlightOrange(const Cairo::RefPtr<Cairo::Context>& cr) {
+    if (lastDetectedOrange.hasDetectedSomething()) {
+        double radius = lastDetectedOrange.getRadius() * width;
+        double x = lastDetectedOrange.getBallPosition().x * width;
+        double y = lastDetectedOrange.getBallPosition().y * width;
+        cr->set_source_rgb(1.0, 0.5, 0.1);
+        cr->arc(x, y, radius, 0, 2 * M_PI);
+        cr->set_line_width(5);
+        cr->stroke();
+    }
+}
+
 void CameraDrawingArea::displayRec(const Cairo::RefPtr<Cairo::Context>& cr) {
     double radius = 7;
     double x = width / 2;
@@ -81,16 +103,16 @@ void CameraDrawingArea::displayRec(const Cairo::RefPtr<Cairo::Context>& cr) {
 }
 
 void CameraDrawingArea::displayCaptureRate(const Cairo::RefPtr<Cairo::Context> &cr, double captureRate) {
-    
+
     char text[30];
-    sprintf(text, "CR %.1f V", captureRate);
-    
+    sprintf(text, "CR %.1f fps", captureRate);
+
     auto layout = create_pango_layout(text);
     layout->set_font_description(fontDescription);
-    
+
     int textWidth, textHeight;
     layout->get_pixel_size(textWidth, textHeight);
-    
+
     cr->move_to(0, height - textHeight);
 
     cr->set_source_rgb(1.0, 1.0, 1.0);
@@ -100,16 +122,16 @@ void CameraDrawingArea::displayCaptureRate(const Cairo::RefPtr<Cairo::Context> &
 void CameraDrawingArea::displayFrameRate(const Cairo::RefPtr<Cairo::Context> &cr, double frameRate) {
 
     char text[30];
-    sprintf(text, "FR %.1f V", frameRate);
-    
+    sprintf(text, "FR %.1f fps", frameRate);
+
     auto layout = create_pango_layout(text);
     layout->set_font_description(fontDescription);
-    
+
     int textWidth, textHeight;
     layout->get_pixel_size(textWidth, textHeight);
-    
+
     cr->move_to(width - textWidth, height - textHeight);
-    
+
     cr->set_source_rgb(1.0, 1.0, 1.0);
     layout->show_in_cairo_context(cr);
 }
diff --git a/src/app/cpp/main-window.cpp b/src/app/cpp/main-window.cpp
index 84644aa..f95e0b5 100644
--- a/src/app/cpp/main-window.cpp
+++ b/src/app/cpp/main-window.cpp
@@ -6,43 +6,20 @@
 
 MainWindow::MainWindow(int width, int height):
 probablyInFullScreen(false),
-m_button("Hello World"),
-m_box(Gtk::ORIENTATION_VERTICAL),
-m_label1("First Label"),
 movieMaker(ServiceLocator::getMovieMaker()){
     // Configure this window:
     this->set_default_size(width, height);
 
-    // Connect the 'click' signal and make the button visible:
-    m_button.signal_clicked().connect(
-            sigc::mem_fun(*this, &MainWindow::buttonClick));
-    m_button.show();
-
-    // Make the first label visible:
-    m_label1.show();
-
     // Make the second label visible:
     cameraDrawingArea.show();
 
-    // Pack all elements in the box:
-    m_box.pack_start(m_button, Gtk::PACK_SHRINK);
-    m_box.pack_start(m_label1, Gtk::PACK_SHRINK);
-    m_box.pack_start(cameraDrawingArea, Gtk::PACK_EXPAND_WIDGET);
-
     // Add the box in this window:
-    add(m_box);
-
-    // Make the box visible:
-    m_box.show();
+    add(cameraDrawingArea);
 
     // Activate Key-Press events
     add_events(Gdk::KEY_PRESS_MASK);
 }
 
-void MainWindow::buttonClick() {
-    std::cout << "Hello World" << std::endl;
-}
-
 bool MainWindow::on_key_press_event(GdkEventKey* event) {
     switch (event->keyval) {
         // Ctrl + C: Ends the application:
diff --git a/src/app/hpp/camera-drawing-area.hpp b/src/app/hpp/camera-drawing-area.hpp
index 69cd27d..182b047 100644
--- a/src/app/hpp/camera-drawing-area.hpp
+++ b/src/app/hpp/camera-drawing-area.hpp
@@ -31,6 +31,8 @@ public Subscriptor<EventOrangeDetected> {
     std::mutex pixbufMutex;
     Glib::RefPtr<Gdk::Pixbuf> pixbuf;
     Pango::FontDescription fontDescription;
+    EventOrangeDetected lastDetectedOrange;
+    void highlightOrange(const Cairo::RefPtr<Cairo::Context>& cr);
     void displayRec(const Cairo::RefPtr<Cairo::Context>& cr);
     void displayCaptureRate(const Cairo::RefPtr<Cairo::Context>& cr, double captureRate);
     void displayFrameRate(const Cairo::RefPtr<Cairo::Context>& cr, double captureRate);
diff --git a/src/app/hpp/main-window.hpp b/src/app/hpp/main-window.hpp
index e27b0a7..237caf6 100644
--- a/src/app/hpp/main-window.hpp
+++ b/src/app/hpp/main-window.hpp
@@ -14,11 +14,7 @@ class MainWindow : public Gtk::Window {
     bool on_key_press_event(GdkEventKey* event) override;
 
 private:
-    void buttonClick();
     bool probablyInFullScreen;
-    Gtk::Button m_button;
-    Gtk::Box m_box;
-    Gtk::Label m_label1;
     CameraDrawingArea cameraDrawingArea;
     MovieMaker * movieMaker;
 };
diff --git a/src/lib/cpp/orange-ball-detector.cpp b/src/lib/cpp/orange-ball-detector.cpp
index 13e20ff..9d6b777 100644
--- a/src/lib/cpp/orange-ball-detector.cpp
+++ b/src/lib/cpp/orange-ball-detector.cpp
@@ -2,6 +2,8 @@
 
 #include <opencv2/imgproc.hpp>
 
+#define ORANGE_BALL_DETECTOR_IMAGE_WIDTH 600
+
 void OrangeBallDetector::receive(EventImageCaptured e) {
     detect(e.getCapturedImage());
 }
@@ -16,7 +18,7 @@ void OrangeBallDetector::detect(cv::Mat image) {
 
     // Make the image of a reasonable size:
     double width = image.size().width;
-    double scale = 600 / width;
+    double scale = ORANGE_BALL_DETECTOR_IMAGE_WIDTH / width;
     resize(image, resizedImage, cv::Size(), scale, scale, cv::INTER_LINEAR);
     showIfDebug(resizedImage);
 
@@ -59,14 +61,12 @@ void OrangeBallDetector::detect(cv::Mat image) {
         // Assuming that biggest contour is a circle,
         // determine its center and size:
         cv::minEnclosingCircle(maxContour, ballPosition, radius);
-
-        // Draw the circle:
-        if (radius > 20) {
-            cv::circle(resizedImage, ballPosition, radius, cv::Scalar(0, 255, 0), 3);
-        }
         showIfDebug(resizedImage);
     }
-    eventBus.propagate(EventOrangeDetected(resizedImage, ballPosition, radius));
+    eventBus.propagate(EventOrangeDetected(
+            resizedImage,
+            ballPosition / ORANGE_BALL_DETECTOR_IMAGE_WIDTH,
+            radius / ORANGE_BALL_DETECTOR_IMAGE_WIDTH));
 }
 
 void OrangeBallDetector::setDebug(bool d) {
@@ -75,6 +75,9 @@ void OrangeBallDetector::setDebug(bool d) {
 
 void OrangeBallDetector::showIfDebug(cv::Mat m) {
     if (debug) {
+        if (radius > 20) {
+            cv::circle(m, ballPosition, radius, cv::Scalar(0, 255, 0), 3);
+        }
         imshow("orange-ball-detector", m);
         cv::waitKey(0);
     }
@@ -122,5 +125,5 @@ float EventOrangeDetected::getRadius() {
 }
 
 bool EventOrangeDetected::hasDetectedSomething() {
-    return radius > 10;
+    return radius > 10 / ORANGE_BALL_DETECTOR_IMAGE_WIDTH;
 }
diff --git a/src/lib/cpp/rate-meter.cpp b/src/lib/cpp/rate-meter.cpp
index e20cd80..21d7e44 100644
--- a/src/lib/cpp/rate-meter.cpp
+++ b/src/lib/cpp/rate-meter.cpp
@@ -4,14 +4,14 @@ using namespace std::chrono;
 
 RateMeter::RateMeter():
 rate(0),
-lastSampleSystemClock(system_clock::now()) {
+lastSampleSystemClock(high_resolution_clock::now()) {
 }
 
 void RateMeter::updateRate() {
-    time_point<system_clock> now = system_clock::now();
+    time_point<high_resolution_clock> now = high_resolution_clock::now();
     std::chrono::duration<double> difference = now - lastSampleSystemClock;
     lastSampleSystemClock = now;
-    
+
     double count = difference.count();
     if (count == 0) {
         rate = 0;
diff --git a/src/lib/hpp/rate-meter.hpp b/src/lib/hpp/rate-meter.hpp
index 99314db..c695be6 100644
--- a/src/lib/hpp/rate-meter.hpp
+++ b/src/lib/hpp/rate-meter.hpp
@@ -13,7 +13,7 @@ class RateMeter {
     
 private:
     double rate;
-    time_point<system_clock> lastSampleSystemClock;
+    time_point<high_resolution_clock> lastSampleSystemClock;
 };
 
 #endif
diff --git a/src/lib/tst/orange-ball-detector-test.cpp b/src/lib/tst/orange-ball-detector-test.cpp
index ffbb2f1..b953457 100644
--- a/src/lib/tst/orange-ball-detector-test.cpp
+++ b/src/lib/tst/orange-ball-detector-test.cpp
@@ -46,7 +46,7 @@ SCENARIO("Can detect orange balls in an image") {
             THEN ( "Can find the orange") {
                 EventOrangeDetected e = receiver.getEvent();
                 REQUIRE(e.hasDetectedSomething() );
-                REQUIRE_THAT(e.getBallPosition().x, WithinAbs(435, 10));
+                REQUIRE_THAT(e.getBallPosition().x, WithinAbs(0.728, 0.01));
             }
         }
 
@@ -59,7 +59,7 @@ SCENARIO("Can detect orange balls in an image") {
             THEN ( "Can find the orange (2)") {
                 EventOrangeDetected e = receiver.getEvent();
                 REQUIRE(e.hasDetectedSomething());
-                REQUIRE_THAT(e.getBallPosition().x, WithinAbs(240, 10));
+                REQUIRE_THAT(e.getBallPosition().x, WithinAbs(0.401, 0.01));
             }
         }
 
@@ -72,7 +72,7 @@ SCENARIO("Can detect orange balls in an image") {
             THEN ( "Can find the ball") {
                 EventOrangeDetected e = receiver.getEvent();
                 REQUIRE(e.hasDetectedSomething());
-                REQUIRE_THAT(e.getBallPosition().x, WithinAbs(360, 10));
+                REQUIRE_THAT(e.getBallPosition().x, WithinAbs(0.599, 0.01));
             }
         }
 
@@ -85,7 +85,7 @@ SCENARIO("Can detect orange balls in an image") {
             THEN ( "Sadly, misses the orange") {
                 EventOrangeDetected e = receiver.getEvent();
                 REQUIRE(e.hasDetectedSomething());
-                REQUIRE_THAT(e.getBallPosition().x, WithinAbs(215, 10));
+                REQUIRE_THAT(e.getBallPosition().x, WithinAbs(0.355, 0.01));
             }
         }
 
@@ -99,7 +99,7 @@ SCENARIO("Can detect orange balls in an image") {
             THEN ( "Can find the ball") {
                 EventOrangeDetected e = receiver.getEvent();
                 REQUIRE(e.hasDetectedSomething());
-                REQUIRE_THAT( e.getBallPosition().x, WithinAbs(360, 10));
+                REQUIRE_THAT( e.getBallPosition().x, WithinAbs(0.613, 0.01));
             }
         }
         WHEN( "Shown with a broccoli") {
diff --git a/src/lib/tst/rate-meter-test.cpp b/src/lib/tst/rate-meter-test.cpp
index 3849ba5..fe54f3f 100644
--- a/src/lib/tst/rate-meter-test.cpp
+++ b/src/lib/tst/rate-meter-test.cpp
@@ -4,7 +4,7 @@
 
 void wait(int c) {
     for (int n = 0; n < c; n++) {
-        for (int m = 0; m < 1000; m++);
+        for (int m = 0; m < 10000; m++);
     }
 }
 
