LCD Scrambled Text

My LCD currently doesn't display characters properly.

Wire configuration:

[LCD]         [Arduino]
GND  -------  GND
VCC  --------  5V
SDA  -------- Analog 4
SCL   -------- Analog 5

Front:

Back:

I've adjusted the contrast pot on the back of the LCD but the text still appears scrambled.
I've also replaced all the connection wires to see if a faulty wire had been the cause of the issue but the
text still shows up the same.

I've been told to run the I2CexpDiag scanner sketch to get a summary of my particular adapter's i2c address and pin mappings and here is the serial output from running that sketch:

********************************************************************
Serial Initialized
--------------------------------------------------------------------
I2CexpDiag - i2c LCD i/o expander backpack diagnostic tool
--------------------------------------------------------------------
hd44780 lib version: 0.8.3
--------------------------------------------------------------------
Reported Arduino Revision: 1.8.1
CPU ARCH: AVR - F_CPU: 16000000
--------------------------------------------------------------------
 A4: digital pin: 18
 A5: digital pin: 19
SDA: digital pin: 18
SCL: digital pin: 19
--------------------------------------------------------------------
Checking for required external I2C pull-up on SDA - YES
Checking for required external I2C pull-up on SCL - YES
--------------------------------------------------------------------
Scanning i2c bus for devices..
 i2c device found at address 0x3F
Total I2C devices found: 1
--------------------------------------------------------------------
Scanning i2c bus for all lcd displays
 LCD at address: 0x3F | config: P01245673H | R/W control: Yes
Total LCD devices found: 1
--------------------------------------------------------------------
LCD Display Memory Test
Display: 0
 Walking 1s data test:	PASSED
 Address line test:	PASSED
--------------------------------------------------------------------
Each working display should be displaying its #, address, and config information
If display is blank, but backlight is on, try adjusting contrast pot
If backlight is off, wait for next test
--------------------------------------------------------------------
Blinking backlight test: to verify BL level autodetection
If backlight is mostly off but
you briefly see "BL Off" on display with backlight on,
then the library autodetected incorrect BL level
and the library cannot autoconfigure the device
--------------------------------------------------------------------
Displaying 'uptime' on all displays
--------------------------------------------------------------------

Here is what my screen looks like when the "uptime" is displayed:

I've tried running other sketches and have generally been experiencing the same problem... could this be a faulty LCD?

The simplest way to check if the display is faulty, is try a different display, if you have, or can get one.

Since the diag memory test is working, then all the h/w and connections from the arduino through the backpack to the LCD is working. Also, the LCD module is responding as expected to the backpack and the internal memory is good.
This verifies that most of the lcd module is working properly.
This likely means that there is some sort of issue in the actual LCD glass panel or there is a problem with the zebra strip that connects the glass to the LCD module PCB or there is some kind of issue in the LCD module in the h/w that controls the pixels.
You could read up on zeba strip to get an idea of how it works and how to potentially remedy certain types of issues.
You might try pressing on the glass to see if that helps. Re-seating the zebra strip might help.

--- bill