diff --git a/.github/workflows/esp-idf-with-gfx.yml b/.github/workflows/esp-idf-with-gfx.yml
index a05b8f3..8d21077 100644
--- a/.github/workflows/esp-idf-with-gfx.yml
+++ b/.github/workflows/esp-idf-with-gfx.yml
@@ -12,7 +12,7 @@ on:
 
 jobs:
   build:
-    name: esp-idf 5.3.1 with Adafruit GFX
+    name: esp-idf v5.3.2 with Adafruit GFX
 
     runs-on: ubuntu-latest
 
@@ -39,12 +39,13 @@ jobs:
       uses: actions/checkout@v4
       with:
         repository: 'espressif/arduino-esp32'
+        ref: 3.1.3
         path: 'examples/esp-idf/with-gfx/components/arduino'
     - name: Edit Adafruit_BusIO CMakeLists.txt
       run: sed -i 's/arduino-esp32)/arduino)/g' examples/esp-idf/with-gfx/components/Adafruit_BusIO/CMakeLists.txt
     - name: esp-idf build
       uses: espressif/esp-idf-ci-action@v1
       with:
-        esp_idf_version: v5.3.1
+        esp_idf_version: v5.3.2
         target: esp32
         path: 'examples/esp-idf/with-gfx'
diff --git a/examples/PIO_TestPatterns/platformio.ini b/examples/PIO_TestPatterns/platformio.ini
index 185513a..a245f55 100644
--- a/examples/PIO_TestPatterns/platformio.ini
+++ b/examples/PIO_TestPatterns/platformio.ini
@@ -4,7 +4,7 @@ description = HUB75 ESP32 I2S DMA test patterns example
 ;src_dir = src
 
 [env]
-platform = espressif32
+platform = https://github.com/pioarduino/platform-espressif32/releases/download/53.03.13/platform-espressif32.zip
 board = wemos_d1_mini32
 lib_deps =
     fastled/FastLED
diff --git a/src/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp b/src/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp
index 068bc24..86acc0f 100644
--- a/src/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp
+++ b/src/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp
@@ -510,45 +510,41 @@ void MatrixPanel_I2S_DMA::clearFrameBuffer(bool _buff_id)
     --row_idx;
 
     ESP32_I2S_DMA_STORAGE_TYPE *row = fb->rowBits[row_idx]->getDataPtr(0); // set pointer to the HEAD of a buffer holding data for the entire matrix row
-
     ESP32_I2S_DMA_STORAGE_TYPE abcde = (ESP32_I2S_DMA_STORAGE_TYPE)row_idx;
 
     // get last pixel index in a row of all colourdepths
     int x_pixel = fb->rowBits[row_idx]->width * fb->rowBits[row_idx]->colour_depth;
-	
+
 	abcde <<= BITS_ADDR_OFFSET; // shift row y-coord to match ABCDE bits in vector from 8 to 12
 	do
 	{
 		--x_pixel;
-
 		if (m_cfg.driver == HUB75_I2S_CFG::SM5266P)
 		{
-		// modifications here for row shift register type SM5266P
-		// https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA/issues/164
-		row[x_pixel] = abcde & (0x18 << BITS_ADDR_OFFSET); // mask out the bottom 3 bits which are the clk di bk inputs
+			// modifications here for row shift register type SM5266P
+			// https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA/issues/164
+			row[x_pixel] = abcde & (0x18 << BITS_ADDR_OFFSET); // mask out the bottom 3 bits which are the clk di bk inputs
 		}
 		else if (m_cfg.driver == HUB75_I2S_CFG::DP3246_SM5368) 
 		{
-		row[ESP32_TX_FIFO_POSITION_ADJUST(x_pixel)] = 0x0000;
+			row[ESP32_TX_FIFO_POSITION_ADJUST(x_pixel)] = 0x0000;
 		}
 		else
 		{
-		row[ESP32_TX_FIFO_POSITION_ADJUST(x_pixel)] = abcde;
+			row[ESP32_TX_FIFO_POSITION_ADJUST(x_pixel)] = abcde;
 		}
 
 	} while (x_pixel != fb->rowBits[row_idx]->width); // spare the first "width's" worth of pixels as they are the LSB pixels/colordepth
 
-	// colour_index[0] (LSB) x_pixels must be "marked" with a previous's row address, 'cause  it is used to display
-	// previous row while we pump in MSBs's for a new row
-
+	// The colour_index[0] (LSB) x_pixels must be "marked" with a previous's row address, because it is used to display
+	// previous row while we pump in MSBs's for the next row.
 	if (row_idx == 0) { 
 		abcde = ROWS_PER_FRAME-1; // wrap around
 	} else {
 		abcde = row_idx-1;	
 	}
-	
+
     abcde <<= BITS_ADDR_OFFSET; // shift row y-coord to match ABCDE bits in vector from 8 to 12		
-	
 	do
     {
       --x_pixel;