SPI OLED display / Serial / R4 fault

I posted this on the r/arudino subreddit and was told I should post it here, so this is a bit of a copy-paste job.

I have a project in mind where I want to display automotive CAN data on a small screen, so I bought an R4 and the following screen -

Using the steps detailed here -

I set the jumpers on the screen to SPI mode, installed the Adafruit_SSD1305_Library and the Adafruit-GFX-Library libraries, and ran the SSD1305 sketch.

Nothing happened - screen remained black. So I moved the screen over to my Uno R3 and it worked straight away.

Back to the R4, opened the serial monitor in the IDE and the OLED screen went crazy. It starts rushing through all of the test animations etc, but the images are getting all jumbled up. When I close the serial monitor the image freezes, and when I reset the device it is once again blank.

I've paired the code right down to as below - it works on the R3 but still not on the R4.
I'd still very much consider myself a beginner when it comes to Arduino, so what was going to be a very challenging project for me has kicked off straight away as a bit of a non-starter.

Just looking for some help in how to resolve this weird issue.

I really want to use the R4 for this, as the built in CAN means I only need a small transceiver IC to read off the bus, an the DAC potentially gives me a way of driving an air-core gauge without loads of complicated electronics or coding - so just using the R3 isn't really an option.

Cheers,
K

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1305.h>

// Used for software SPI
#define OLED_CLK 13
#define OLED_MOSI 11

// Used for software or hardware SPI
#define OLED_CS 10
#define OLED_DC 8

#define OLED_RESET 9

// Software SPI
//Adafruit_SSD1305 display(128, 64, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

// Hardware SPI
Adafruit_SSD1305 display(128, 64, &SPI, OLED_DC, OLED_RESET, OLED_CS, 7000000UL);

void setup()   {                
  //Serial.begin(9600);
  //while (! Serial) delay(100);
  //Serial.println("SSD1305 OLED test");
  
  if ( ! display.begin(0x3C) ) {
     //Serial.println("Unable to initialize OLED");
     while (1) yield();
  }
  display.display(); // show splashscreen
  delay(3000);
  display.clearDisplay();
 
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.print("TEST");
  display.display();
}

void loop() {
}