7 segment clock in a large custom LED Matrix with MAX7219 driver

Hello,

I have been tinkering around with the max7219 led driver to drive my led matrix consisting of regular rgb through hole LEDs and 1kOhm resistors. (the configuration is a common cathode and the wiring resembles that of a single 7 segment LED display).

I have been able to use the MAX7219 driver to run the display with information coming from a RTC DS1307 chip very well. My issue however is that the second hour digit (to the right) is flickering along with the DP LED next to it. (Picture found below)

Would there be a way to code the arduino to prevent this from happening? Here is my full code for reference:

include <RTClib.h>
#include <LedControl.h>
//=======================================================================================
// data pin, clock, latch

double hold;

LedControl lc = LedControl(4, 2, 3, 1);
RTC_DS1307 rtc;

//========================================================================================

void setup() {
rtc.begin();
lc.shutdown(0, false);
lc.setIntensity(0, 8); // display brightness
lc.clearDisplay(0); // erase display
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //set clock as computer clock
//rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));

}

//========================================================================================
void loop() {
hold = millis();
while ((hold + 20000) > millis() ) {
DateTime now = rtc.now();
setCol1(now.hour());
setCol2(now.minute());
setCol3(now.second());
lc.setChar (0, 2, '.', false);
//lc.setChar (0, 2, '-', false);
//lc.setChar (0, 5, '-', false);
}

hold = millis();
while ((hold + 5000) > millis() ) {
DateTime now = rtc.now();
setCol1(now.day());
setCol2(now.month());
setCol3(now.year() - 2000);
//lc.setChar (0, 2, '-', false);
//lc.setChar (0, 5, '-', false);
}

}

//========================================================================================
void setCol1 (byte jam) {
String strBuffer = Konversi(jam);
byte pjg = strBuffer.length() + 1;
char val[pjg];
strBuffer.toCharArray(val, pjg);
lc.setChar (0, 3, val[0], false);
lc.setChar (0, 2, val[1], false);
}

//========================================================================================
void setCol2 (byte mnt) {
String strBuffer = Konversi(mnt);
byte pjg = strBuffer.length() + 1;
char val[pjg];
strBuffer.toCharArray(val, pjg);
lc.setChar (0, 1, val[0], false);
lc.setChar (0, 0, val[1], false);
}

void setCol3 (byte dtk) {
String strBuffer = Konversi(dtk);
byte pjg = strBuffer.length() + 1;
char val[pjg];
strBuffer.toCharArray(val, pjg);
lc.setChar (0, 6, val[0], false);
lc.setChar (0, 7, val[1], false);
}

String Konversi(int nilai) {
if (nilai < 10) {
return "0" + String(nilai);
}
else {
return String(nilai);
}
}

Any input would be greatly appreciated, Thanks!