diff --git a/OLEDDisplayUi.cpp b/OLEDDisplayUi.cpp
index 5f6499c2da16f7896592521d10c834d6ca984e64..d8e1cb3efa92eda69281a3bc8ba677618ad1d8ae 100644
--- a/OLEDDisplayUi.cpp
+++ b/OLEDDisplayUi.cpp
@@ -95,22 +95,20 @@ void OLEDDisplayUi::setFrameAnimation(AnimationDirection dir) {
   this->frameAnimationDirection = dir;
 }
 void OLEDDisplayUi::setFrames(FrameCallback* frameFunctions, uint8_t frameCount) {
-  this->frameCount     = frameCount;
   this->frameFunctions = frameFunctions;
+  this->frameCount     = frameCount;
+  this->resetState();
 }
 
 // -/----- Overlays ------\-
 void OLEDDisplayUi::setOverlays(OverlayCallback* overlayFunctions, uint8_t overlayCount){
-  this->overlayCount     = overlayCount;
   this->overlayFunctions = overlayFunctions;
+  this->overlayCount     = overlayCount;
 }
 
 // -/----- Loading Process -----\-
 
 void OLEDDisplayUi::runLoadingProcess(LoadingStage* stages, uint8_t stagesCount) {
-  display->setTextAlignment(TEXT_ALIGN_CENTER);
-  display->setFont(ArialMT_Plain_10);
-
   uint8_t progress = 0;
   uint8_t increment = 100 / stagesCount;
 
@@ -206,6 +204,14 @@ void OLEDDisplayUi::tick() {
   this->display->display();
 }
 
+void OLEDDisplayUi::resetState() {
+  this->state.lastUpdate = 0;
+  this->state.ticksSinceLastStateSwitch = 0;
+  this->state.frameState = FIXED;
+  this->state.currentFrame = 0;
+  this->state.isIndicatorDrawen = true;
+}
+
 void OLEDDisplayUi::drawFrame(){
   switch (this->state.frameState){
      case IN_TRANSITION: {
diff --git a/OLEDDisplayUi.h b/OLEDDisplayUi.h
index 560c27ce18ed0040df92a3372260fa584a610e94..73f09657569cb30db881ce2b1465437c4a246e58 100644
--- a/OLEDDisplayUi.h
+++ b/OLEDDisplayUi.h
@@ -135,7 +135,9 @@ class OLEDDisplayUi {
 
     // Loading screen
     LoadingDrawFunction loadingDrawFunction       = [](OLEDDisplay *display, LoadingStage* stage, uint8_t progress) {
-      display->drawString(64, 20, stage->process);
+      display->setTextAlignment(TEXT_ALIGN_CENTER);
+      display->setFont(ArialMT_Plain_10);
+      display->drawString(64, 18, stage->process);
       display->drawProgressBar(4, 32, 120, 8, progress);
     };
 
@@ -150,6 +152,7 @@ class OLEDDisplayUi {
     void                drawFrame();
     void                drawOverlays();
     void                tick();
+    void                resetState();
 
   public:
 
@@ -255,7 +258,7 @@ class OLEDDisplayUi {
      * Set the function that will draw each step
      * in the loading animation
      */
-    void setLoadingDrawFunction(LoadingDrawFunction stage);
+    void setLoadingDrawFunction(LoadingDrawFunction loadingFunction);
 
 
     /**