 	if (pwm_i >= ARRAY_SIZE(pwm_lengths)) {
 		pwm_i = 0;
 		col_i++;
-		if (col_i > 7) {
+		if (col_i >= 8) {
 			col_i = 0;
 			row_i++;
-			if (row_i > 6) {
+			if (row_i >= 7) {
 				row_i = 0;
-				if (may_flip) {
-					buf_swap();
-				}
+				try_buf_swap();
 			}
+			// We can already pull the row latch down
+			digitalWrite(PIN_ROW_LATCH, LOW);
 		}
 	}
 

unsigned int byte_i;
uint8_t bit_i;

inline static void frame_store(uint8_t intensity);
inline static void set_pixel(uint8_t *plane);
static void screen_on(void);
inline static void pick_column(void);
static void try_drive_screen(void);

void buf_swap(void) {
	uint8_t (*tmp)[56] = buf_front;
	buf_front = buf_back;
	buf_back = tmp;
	if (may_flip) {
		Serial.write('S');
		may_flip = 0;
	}
}

void setup() {

	// it down.
	digitalWrite(PIN_COL_LATCH, LOW);
	
	// Send new data via SPI. Completion is monitored in SPI_STC_vect.
	SPDR = buf_front[pwm_i][8*row_i+col_i];
}

