     curFrameDuration = (durationBuffer << 2) + (EEPROM.read(startAddr + 1) >> 6);
 
     // Load next frame, by masking the necessary bits (bit flip is needed, because the shift register for the lines is a sink and needs to put to LOW)
-    curFrame[0] = ~(EEPROM.read(startAddr + 1) & 63); // 63 = 00111111
-    curFrame[1] = ~(EEPROM.read(startAddr + 2) >> 2);
-    curFrame[2] = ~(((EEPROM.read(startAddr + 2) & 3) << 4) + (EEPROM.read(startAddr + 3) >> 4));
-    curFrame[3] = ~(((EEPROM.read(startAddr + 3) & 15) << 2) + (EEPROM.read(startAddr + 4) >> 6));
-    curFrame[4] = ~(EEPROM.read(startAddr + 4) & 63);
+    curFrame[0] = EEPROM.read(startAddr + 1) & 63; // 63 = 00111111
+    curFrame[1] = EEPROM.read(startAddr + 2) >> 2;
+    curFrame[2] = ((EEPROM.read(startAddr + 2) & 3) << 4) + (EEPROM.read(startAddr + 3) >> 4);
+    curFrame[3] = ((EEPROM.read(startAddr + 3) & 15) << 2) + (EEPROM.read(startAddr + 4) >> 6);
+    curFrame[4] = EEPROM.read(startAddr + 4) & 63;
+
+    // Put the bits to right position according to the line offset and flip them, because the cols needs to be LOW to be on
+    for (unsigned short j = 0; j < LINE_AMOUNT; j++) {
+        curFrame[j] = ~(curFrame[j] << LINE_OFFSET);
+    }
 }
 
 /**

    // All on for about 3 seconds
    frame[0] = 3;
    for (int j = 1; j < FRAME_SIZE; j++) frame[j] = 255;
}

// ========

 * Writes a default clip into EEPROM
 */
void writeDefaultClip() {
    digitalWrite(infoPin, HIGH); // Indicating that there is some processing

    byte frame[5];
    for (int j = 0; j < FRAME_SIZE; j++) frame[j] = 0; // Reset frame buffer

    // Blink line by line
    frame[1] = 255;
    saveFrame(0, frame);
    for (int j = 1; j < FRAME_SIZE; j++) frame[j] = 0; // Reset frame buffer

    frame[1] = 3 << 6;
    frame[2] = 63 << 2;
    saveFrame(1, frame);
    for (int j = 1; j < FRAME_SIZE; j++) frame[j] = 0; // Reset frame buffer

    frame[1] = 3 << 6;
    frame[2] = 3;
    frame[3] = 15 << 4;
    saveFrame(2, frame);
    for (int j = 1; j < FRAME_SIZE; j++) frame[j] = 0; // Reset frame buffer

    frame[1] = 3 << 6;
    frame[3] = 15;
    frame[4] = 3 << 6;
    saveFrame(3, frame);
    for (int j = 1; j < FRAME_SIZE; j++) frame[j] = 0; // Reset frame buffer

    frame[1] = 3 << 6;
    frame[4] = 63;
    saveFrame(4, frame);
    for (int j = 1; j < FRAME_SIZE; j++) frame[j] = 0; // Reset frame buffer

    // Blink col by col
    frame[1] = (3 << 6) + 1;
