Waveshare 800×480, 7.5inch E-Ink raw display fades after refresh

I replaced the display and associated Waveshare e-Paper ESP8266 Driver Board about 2 months ago because the original display failed after about a year. The new display worked fine, for a month, but now after a refresh, the contrast will be OK for about 2 seconds, and then fade about half. Any suggestions?
Code follows:

// GxEPD2_Example : with Wifi, HTTP request, and JSON filtering
// USE WITH GDEW075T7 800x480, GD7965 and BitmapLEK.h    
/*******************************************************************
    A sample project for making a HTTP GET request on an ESP8266
    and parsing and filtering it from JSON and display using a
    Waveshare ESP8266 e-paper driver and 7.5 (800x480) 2-color display

    2022 LEKtronics.com
 *******************************************************************/

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
//ESP Web Server Library to host a web page
//#include <ESP8266WebServer.h>

#include <ArduinoJson.h>

#include <GxEPD2_BW.h> // including both doesn't use more code or ram

#include "BitmapLEK2.h"

// FreeFonts from Adafruit_GFX
#include <Fonts/FreeMonoBold9pt7b.h>
#include <Fonts/FreeMonoBold12pt7b.h>
#include <Fonts/FreeMonoBold18pt7b.h>
#include <Fonts/FreeMonoBold24pt7b.h>

#include "bitmaps/Bitmaps800x480.h" // 7.5"  b/w

#define GxEPD2_DISPLAY_CLASS GxEPD2_BW

#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7  // GDEW075T7   800x480, GD7965

#define EPD_CS SS

#define GxEPD2_BW_IS_GxEPD2_BW true

#define IS_GxEPD2_BW(x) IS_GxEPD(GxEPD2_BW_IS_, x)

#define MAX_DISPLAY_BUFFER_SIZE (81920ul-34000ul-20000ul) // ~34000 base use, change 5000 to your application use

#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))

#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7  // GDEW075T7   800x480, GD7965

GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16));

//------- Replace the following! ------
char ssid[] = "*******";       // your network SSID (name)
char password[] = "********";  // your network key

// For HTTP requests
WiFiClient client;

// Just the base of the URL you want to connect to
#define TEST_HOST "api.weatherlink.com"

String dewpoint_f;
String observation_time;
String pressure_in;
String relative_humidity;
String temp_f;
String wind_dir;
String wind_mph;
String windchill_f;
String rain_day_in;
String rain_month_in;
String rain_year_in;
String pressure_tendency_string;
String sunrise;
String sunset;

//char Title[] = "---FREEDOM---";

//Static IP address configuration
IPAddress staticIP(192, 168, 1, 91); //ESP static ip
IPAddress gateway(192, 168, 1, 1);   //IP Address of your WiFi Router (Gateway)
IPAddress subnet(255, 255, 255, 0);  //Subnet mask
IPAddress dns(209,18,47,61);  //DNS

void setup()
{
  Serial.begin(115200);
  Serial.println();
  Serial.println("setup");
  display.init(115200); // enable diagnostic output on Serial

  WiFi.disconnect();  //Prevent connecting to wifi based on previous configuration
  WiFi.config(staticIP, gateway, subnet, dns);
  WiFi.begin(ssid, password);
  
    // Connect to the WiFI
  WiFi.mode(WIFI_STA);
  //WiFi.disconnect();
  delay(100);

  // Attempt to connect to Wifi network:
  Serial.print("Connecting Wifi: ");
  Serial.println(ssid);
  
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  IPAddress ipCon = WiFi.localIP();
  
  Serial.println(ipCon);
  Serial.println("setup done");

}

void loop()
{
  makeHTTPRequest();
  delay(960000);// 960000 is 15 minutes
  //delay(15000);
}

void makeHTTPRequest() {

  Serial.println("Requesting");

  // Opening connection to server (Use 80 as port if HTTP)
  if (!client.connect(TEST_HOST, 80))
  {
    Serial.println(F("Connection failed"));
    return;
  }

  // give the esp a breather
  yield();

  // Send HTTP request
  client.print(F("GET "));
  // This is the second half of a request (everything that comes after the base URL)
  client.print("/v1/NoaaExt.json?user=**********************&apiToken=*****************************************"); 
  client.println(F(" HTTP/1.1"));

  //Headers
  client.print(F("Host: "));
  client.println(TEST_HOST);

  client.println(F("Cache-Control: no-cache"));

  if (client.println() == 0)
  {
    Serial.println(F("Failed to send request"));
    return;
  }
  //delay(100);
  // Check HTTP status
  char status[32] = {0};
  client.readBytesUntil('\r', status, sizeof(status));
  if (strcmp(status, "HTTP/1.1 200 OK") != 0)
  {
    Serial.print(F("Unexpected response: "));
    Serial.println(status);
    return;
  }

  // Skip HTTP headers
  char endOfHeaders[] = "\r\n\r\n";
  if (!client.find(endOfHeaders))
  {
    Serial.println(F("Invalid response"));
    return;
  }

  // This is probably not needed for most, but I had issues
  // with the Tindie api where sometimes there were random
  // characters coming back before the body of the response.
  // This will cause no harm to leave it in
  // peek() will look at the character, but not take it off the queue
  while (client.available() && client.peek() != '{')
  {
    char c = 0;
    client.readBytes(&c, 1);
    Serial.print(c);
    Serial.println("BAD");
  }

  DynamicJsonDocument doc(6144);

  DeserializationError error = deserializeJson(doc, client);

  if (error) {
    Serial.print(F("deserializeJson() failed: "));
    Serial.println(error.f_str());
    return;
  }
  
// The huge input: an extract from Davis Weather response
const char* credit = doc["credit"]; // "Davis Instruments Corp."
const char* credit_URL = doc["credit_URL"]; // "http://www.davisnet.com"
const char* disclaimer_url = doc["disclaimer_url"]; // "http://www.davisnet.com/about/terms.asp"
const char* copyright_url = doc["copyright_url"]; // "http://www.davisnet.com/about/terms.asp"
const char* privacy_policy_url = doc["privacy_policy_url"];

JsonObject image = doc["image"];
const char* image_url = image["url"]; // "http://www.weatherlink.com/images/Logo_Davis_reflxblu.jpg"
const char* image_title = image["title"]; // "Davis WeatherLink"
const char* image_link = image["link"]; // "http://www.weatherlink.com"

const char* suggested_pickup = doc["suggested_pickup"]; // "15 minutes after the hour"
const char* suggested_pickup_period = doc["suggested_pickup_period"]; // "60"
const char* dewpoint_c = doc["dewpoint_c"]; // "-13.3"
const char* dewpoint_f = doc["dewpoint_f"]; // "8.0"
const char* dewpoint_string = doc["dewpoint_string"]; // "8.0 F (-13.3 C)"
const char* heat_index_c = doc["heat_index_c"]; // "-9.4"
const char* heat_index_f = doc["heat_index_f"]; // "15.0"
const char* heat_index_string = doc["heat_index_string"]; // "15.0 F (-9.4 C)"
const char* location = doc["location"]; // "Pemberville, OH, United States of America"
const char* latitude = doc["latitude"]; // "41.40177"
const char* longitude = doc["longitude"]; // "-83.44719"
const char* observation_time = doc["observation_time"]; // "Last Updated on Jan 25 2022, 9:52 pm EST"
const char* observation_time_rfc822 = doc["observation_time_rfc822"]; // "Tue, 25 Jan 2022 21:52:10 ...
const char* pressure_in = doc["pressure_in"]; // "30.328"
const char* pressure_mb = doc["pressure_mb"]; // "1027.0"
const char* pressure_string = doc["pressure_string"]; // "1027.0 mb"
const char* relative_humidity = doc["relative_humidity"]; // "73"
const char* station_id = doc["station_id"]; // "larryk240"
const char* temp_c = doc["temp_c"]; // "-9.2"
const char* temp_f = doc["temp_f"]; // "15.4"
const char* temperature_string = doc["temperature_string"]; // "15.4 F (-9.2 C)"
const char* wind_degrees = doc["wind_degrees"]; // "271"
const char* wind_dir = doc["wind_dir"]; // "West"
const char* wind_kt = doc["wind_kt"]; // "5.2"
const char* wind_mph = doc["wind_mph"]; // "6.0"
const char* windchill_c = doc["windchill_c"]; // "-10.6"
const char* windchill_f = doc["windchill_f"]; // "13.0"
const char* windchill_string = doc["windchill_string"]; // "13.0 F (-10.6 C)"

JsonObject davis_current_observation = doc["davis_current_observation"];
const char* davis_current_observation_DID = davis_current_observation["DID"]; // "001D0AE07E21"
const char* davis_current_observation_station_name = davis_current_observation["station_name"];
int davis_current_observation_observation_age = davis_current_observation["observation_age"]; // 3
const char* davis_current_observation_dewpoint_day_high_f = davis_current_observation["dewpoint_day_high_f"];
const char* davis_current_observation_dewpoint_day_high_time = davis_current_observation["dewpoint_day_high_time"];
const char* davis_current_observation_dewpoint_day_low_f = davis_current_observation["dewpoint_day_low_f"];
const char* davis_current_observation_dewpoint_day_low_time = davis_current_observation["dewpoint_day_low_time"];
const char* davis_current_observation_dewpoint_month_high_f = davis_current_observation["dewpoint_month_high_f"];
const char* davis_current_observation_dewpoint_month_low_f = davis_current_observation["dewpoint_month_low_f"];
const char* davis_current_observation_dewpoint_year_high_f = davis_current_observation["dewpoint_year_high_f"];
const char* davis_current_observation_dewpoint_year_low_f = davis_current_observation["dewpoint_year_low_f"];
const char* davis_current_observation_heat_index_day_high_f = davis_current_observation["heat_index_day_high_f"];
const char* davis_current_observation_heat_index_day_high_time = davis_current_observation["heat_index_day_high_time"];
const char* davis_current_observation_heat_index_month_high_f = davis_current_observation["heat_index_month_high_f"];
const char* davis_current_observation_heat_index_year_high_f = davis_current_observation["heat_index_year_high_f"];
const char* davis_current_observation_pressure_day_high_in = davis_current_observation["pressure_day_high_in"];
const char* davis_current_observation_pressure_day_high_time = davis_current_observation["pressure_day_high_time"];
const char* davis_current_observation_pressure_day_low_in = davis_current_observation["pressure_day_low_in"];
const char* davis_current_observation_pressure_day_low_time = davis_current_observation["pressure_day_low_time"];
const char* davis_current_observation_pressure_month_high_in = davis_current_observation["pressure_month_high_in"];
const char* davis_current_observation_pressure_month_low_in = davis_current_observation["pressure_month_low_in"];
const char* davis_current_observation_pressure_tendency_string = davis_current_observation["pressure_tendency_string"];
const char* davis_current_observation_pressure_year_high_in = davis_current_observation["pressure_year_high_in"];
const char* davis_current_observation_pressure_year_low_in = davis_current_observation["pressure_year_low_in"];
const char* davis_current_observation_rain_day_in = davis_current_observation["rain_day_in"];
const char* davis_current_observation_rain_month_in = davis_current_observation["rain_month_in"];
const char* davis_current_observation_rain_rate_day_high_in_per_hr = davis_current_observation["rain_rate_day_high_in_per_hr"];
const char* davis_current_observation_rain_rate_hour_high_in_per_hr = davis_current_observation["rain_rate_hour_high_in_per_hr"];
const char* davis_current_observation_rain_rate_in_per_hr = davis_current_observation["rain_rate_in_per_hr"];
const char* davis_current_observation_rain_rate_month_high_in_per_hr = davis_current_observation["rain_rate_month_high_in_per_hr"];
const char* davis_current_observation_rain_rate_year_high_in_per_hr = davis_current_observation["rain_rate_year_high_in_per_hr"];
const char* davis_current_observation_rain_storm_in = davis_current_observation["rain_storm_in"];
const char* davis_current_observation_rain_year_in = davis_current_observation["rain_year_in"];
const char* davis_current_observation_relative_humidity_day_high = davis_current_observation["relative_humidity_day_high"];
const char* davis_current_observation_relative_humidity_day_high_time = davis_current_observation["relative_humidity_day_high_time"];
const char* davis_current_observation_relative_humidity_day_low = davis_current_observation["relative_humidity_day_low"];
const char* davis_current_observation_relative_humidity_day_low_time = davis_current_observation["relative_humidity_day_low_time"];
const char* davis_current_observation_relative_humidity_month_high = davis_current_observation["relative_humidity_month_high"];
const char* davis_current_observation_relative_humidity_month_low = davis_current_observation["relative_humidity_month_low"];
const char* davis_current_observation_relative_humidity_year_high = davis_current_observation["relative_humidity_year_high"];
const char* davis_current_observation_relative_humidity_year_low = davis_current_observation["relative_humidity_year_low"];
const char* davis_current_observation_relative_humidity_in = davis_current_observation["relative_humidity_in"];
const char* davis_current_observation_relative_humidity_in_day_high = davis_current_observation["relative_humidity_in_day_high"];
const char* davis_current_observation_relative_humidity_in_day_high_time = davis_current_observation["relative_humidity_in_day_high_time"];
const char* davis_current_observation_relative_humidity_in_day_low = davis_current_observation["relative_humidity_in_day_low"];
const char* davis_current_observation_relative_humidity_in_day_low_time = davis_current_observation["relative_humidity_in_day_low_time"];
const char* davis_current_observation_relative_humidity_in_month_high = davis_current_observation["relative_humidity_in_month_high"];
const char* davis_current_observation_relative_humidity_in_month_low = davis_current_observation["relative_humidity_in_month_low"];
const char* davis_current_observation_relative_humidity_in_year_high = davis_current_observation["relative_humidity_in_year_high"];
const char* davis_current_observation_relative_humidity_in_year_low = davis_current_observation["relative_humidity_in_year_low"];
const char* davis_current_observation_sunrise = davis_current_observation["sunrise"]; // "7:50am"
const char* davis_current_observation_sunset = davis_current_observation["sunset"]; // "5:41pm"
const char* davis_current_observation_temp_day_high_f = davis_current_observation["temp_day_high_f"];
const char* davis_current_observation_temp_day_high_time = davis_current_observation["temp_day_high_time"];
const char* davis_current_observation_temp_day_low_f = davis_current_observation["temp_day_low_f"];
const char* davis_current_observation_temp_day_low_time = davis_current_observation["temp_day_low_time"];
const char* davis_current_observation_temp_month_high_f = davis_current_observation["temp_month_high_f"];
const char* davis_current_observation_temp_month_low_f = davis_current_observation["temp_month_low_f"];
const char* davis_current_observation_temp_year_high_f = davis_current_observation["temp_year_high_f"];
const char* davis_current_observation_temp_year_low_f = davis_current_observation["temp_year_low_f"];
const char* davis_current_observation_temp_in_day_high_f = davis_current_observation["temp_in_day_high_f"];
const char* davis_current_observation_temp_in_day_high_time = davis_current_observation["temp_in_day_high_time"];
const char* davis_current_observation_temp_in_day_low_f = davis_current_observation["temp_in_day_low_f"];
const char* davis_current_observation_temp_in_day_low_time = davis_current_observation["temp_in_day_low_time"];
const char* davis_current_observation_temp_in_f = davis_current_observation["temp_in_f"]; // "49.6"
const char* davis_current_observation_temp_in_month_high_f = davis_current_observation["temp_in_month_high_f"];
const char* davis_current_observation_temp_in_month_low_f = davis_current_observation["temp_in_month_low_f"];
const char* davis_current_observation_temp_in_year_high_f = davis_current_observation["temp_in_year_high_f"];
const char* davis_current_observation_temp_in_year_low_f = davis_current_observation["temp_in_year_low_f"];
const char* davis_current_observation_wind_day_high_mph = davis_current_observation["wind_day_high_mph"];
const char* davis_current_observation_wind_day_high_time = davis_current_observation["wind_day_high_time"];
const char* davis_current_observation_wind_month_high_mph = davis_current_observation["wind_month_high_mph"];
const char* davis_current_observation_wind_ten_min_avg_mph = davis_current_observation["wind_ten_min_avg_mph"];
const char* davis_current_observation_wind_ten_min_gust_mph = davis_current_observation["wind_ten_min_gust_mph"];
const char* davis_current_observation_wind_year_high_mph = davis_current_observation["wind_year_high_mph"];
const char* davis_current_observation_windchill_day_low_f = davis_current_observation["windchill_day_low_f"];
const char* davis_current_observation_windchill_day_low_time = davis_current_observation["windchill_day_low_time"];
const char* davis_current_observation_windchill_month_low_f = davis_current_observation["windchill_month_low_f"];
const char* davis_current_observation_windchill_year_low_f = davis_current_observation["windchill_year_low_f"];

const char* time_to_generate = doc["time_to_generate"]; // "0.008630 seconds"

    if (!error) {

  // Print the result
  //serializeJsonPretty(doc, Serial);

String freedom_dewpoint_f = doc["dewpoint_f"];
int str_len = freedom_dewpoint_f.length() + 1;
char dew_F[str_len];
freedom_dewpoint_f.toCharArray(dew_F, str_len);  

String freedom_observation_time = doc["observation_time"];
int str_len_0 = freedom_observation_time.length() + 1;
char ob_Time[str_len_0];
freedom_observation_time.toCharArray(ob_Time, str_len_0);

String freedom_temp_f = doc["temp_f"];
int str_len_1 = freedom_temp_f.length() + 1;
char temp_F[str_len_1];
freedom_temp_f.toCharArray(temp_F, str_len_1);

String freedom_wind_mph = doc["wind_mph"];
int str_len_2 = freedom_wind_mph.length() + 1;
char wind_Mph[str_len_2];
freedom_wind_mph.toCharArray(wind_Mph, str_len_2);

String freedom_wind_dir = doc["wind_dir"];
int str_len_3 = freedom_wind_dir.length() + 1;
char wind_Dir[str_len_3];
freedom_wind_dir.toCharArray(wind_Dir, str_len_3);

String freedom_windchill_f = doc["windchill_f"];
int str_len_4 = freedom_windchill_f.length() + 1;
char wind_Chill[str_len_4];
freedom_windchill_f.toCharArray(wind_Chill, str_len_4);

String freedom_pressure_in = doc["pressure_in"];
int str_len_5 = freedom_pressure_in.length() + 1;
char press_In[str_len_5];
freedom_pressure_in.toCharArray(press_In, str_len_5);

String freedom_relative_humidity = doc["relative_humidity"];
int str_len_6 = freedom_relative_humidity.length() + 1;
char rel_Hum[str_len_6];
freedom_relative_humidity.toCharArray(rel_Hum, str_len_5);

String freedom_rain_day_in = davis_current_observation["rain_day_in"];
int str_len_7 = freedom_rain_day_in.length() + 1;
char rain_Day[str_len_7];
freedom_rain_day_in.toCharArray(rain_Day, str_len_7);

String freedom_rain_month_in = davis_current_observation["rain_month_in"];
int str_len_8 = freedom_rain_month_in.length() + 1;
char rain_Mo[str_len_8];
freedom_rain_month_in.toCharArray(rain_Mo, str_len_8);

String freedom_rain_year_in = davis_current_observation["rain_year_in"];
int str_len_9 = freedom_rain_year_in.length() + 1;
char rain_Yr[str_len_9];
freedom_rain_year_in.toCharArray(rain_Yr, str_len_9);

String freedom_pressure_tendency_string = davis_current_observation["pressure_tendency_string"];
int str_len_10 = freedom_pressure_tendency_string.length() + 1;
char press_Str[str_len_10];
freedom_pressure_tendency_string.toCharArray(press_Str, str_len_10);

String freedom_sunrise = davis_current_observation["sunrise"];
int str_len_11 = freedom_sunrise.length() + 1;
char sun_Rise[str_len_11];
freedom_sunrise.toCharArray(sun_Rise, str_len_11);

String freedom_sunset = davis_current_observation["sunset"];
int str_len_12 = freedom_sunset.length() + 1;
char sun_Set[str_len_12];
freedom_sunset.toCharArray(sun_Set, str_len_12);

  Serial.print("rain_day_in = ");
  Serial.println(freedom_rain_day_in);
  Serial.print("rain_month_in = ");
  Serial.println(freedom_rain_month_in);
  Serial.print("rain_year_in = ");
  Serial.println(freedom_rain_year_in);

    display.setRotation(0);
    display.setFont(&FreeMonoBold24pt7b);
    display.setTextColor(GxEPD_BLACK);
    uint16_t x = ((display.width() - 400) / 2);
    uint16_t y = (display.height() - 400);
    display.setFullWindow();
    display.firstPage();
  do
  {
    display.fillScreen(GxEPD_WHITE);
    display.setCursor(x, y - 11);
    display.setFont(&FreeMonoBold24pt7b);
    display.println("FREEDOM WEATHER");


    display.drawInvertedBitmap(x - 130, 20, lek_bmp_sunrise, 61, 50, GxEPD_BLACK);
    display.drawInvertedBitmap(x + 475, 20, lek_bmp_sunset, 61, 50, GxEPD_BLACK);
    display.setFont(&FreeMonoBold12pt7b);
    display.setCursor(x - 140, y + 10);
    display.print(sun_Rise);
    display.setCursor(x + 465, y + 10);
    display.print(sun_Set);
   
    display.setFont(&FreeMonoBold12pt7b);
    display.setCursor(x - 105, y + 55);
    display.print("Temperature      Wind Chill        Dewpoint ");

    //display.drawRect(x - 115, y + 30, 175, 80, 0);
    display.setCursor(x - 90, y + 95);
    display.setFont(&FreeMonoBold18pt7b);
    display.print(temp_F);
    display.print(" F");
    //display.drawRect(x + 120, y + 30, 175, 80, 0);
    display.setCursor(x + 140, y + 95); 
    display.print(wind_Chill);
    display.print(" F");
    //display.drawRect(x + 350, y + 30, 175, 80, 0);
    display.setCursor(x + 370, y + 95);
    display.print(dew_F);
    display.print(" F");
    
    display.setFont(&FreeMonoBold12pt7b);
    display.setCursor(x +180, y + 145);
    display.print("WIND");
    //display.drawRect(x - 150, y + 120, 700, 75, 0);
    display.setFont(&FreeMonoBold18pt7b);
    uint16_t drawCenter = (str_len_2 * 12) + (str_len_3 * 12) + 60;
    Serial.print("drawCenter = ");
    Serial.println(drawCenter);
    display.setCursor(440 - drawCenter , y + 180);
    //str_len_3
    display.print(wind_Dir);
    display.print(" @ ");
    display.print(wind_Mph);
    display.print(" MPH");
    
    display.setCursor(x - 110, y + 235);
    display.setFont(&FreeMonoBold12pt7b);
    display.print("Barometer  ");
    display.setFont(&FreeMonoBold18pt7b);
    display.print(press_In);
    display.print(" IN");
    display.setCursor(x + 225, y + 250);
    display.setFont(&FreeMonoBold12pt7b);
    display.print("    Humidity  ");
    display.setFont(&FreeMonoBold18pt7b);
    display.print(rel_Hum);
    display.print(" %");
    //display.drawRect(x - 150, y + 205, 700, 70, 0);

    display.setCursor(x - 80, y + 260);
    display.setFont(&FreeMonoBold9pt7b);
    display.print("Pressure ");
    display.print(press_Str); 
    
    display.setFont(&FreeMonoBold12pt7b);
    display.setCursor(x + 75, y + 310);
    display.print("Inches Of Rainfall");

    display.setCursor(x - 110, y + 345);
    display.setFont(&FreeMonoBold12pt7b);
    display.print("Day ");
    display.setFont(&FreeMonoBold18pt7b);
    display.print(rain_Day);
    display.setFont(&FreeMonoBold12pt7b);
    display.print(" Month ");
    display.setFont(&FreeMonoBold18pt7b);
    display.print(rain_Mo);
    display.setFont(&FreeMonoBold12pt7b);
    display.print(" Year ");
    display.setFont(&FreeMonoBold18pt7b);
    display.print(rain_Yr);
    //display.drawRect(x - 150, y + 285, 700, 75, 0);
    
    display.drawLine(x - 20, y + 370, x + 420, y + 370 , 0);
    display.setFont(&FreeMonoBold9pt7b);
    display.setCursor(x - 20 , y + 390);
    display.print(ob_Time);

    display.drawInvertedBitmap(x - 140, y + 363, lek_bmp_lektronics, 120, 40, GxEPD_BLACK);
    display.drawInvertedBitmap(x + 445, y + 374, lek_bmp_copyright, 20, 20, GxEPD_BLACK);
    display.setFont(&FreeMonoBold12pt7b);
    display.setCursor(x +470 , y + 390);
    display.print("2023"); 


    //display.drawRect(x - 25, y - 50 , 460, 52, 0);
    //display.drawRect(x - 30, y - 55 , 470, 62, 0);
    //display.drawRect(x - 35, y - 60 , 480, 72, 0);
    //display.drawRect(x - 40, y - 65 , 490, 82, 0);
    
   }
  while (display.nextPage());

    display.powerOff();
  
    }
    
else {
    Serial.print(F("deserializeJson() failed: "));
    Serial.println(error.f_str());
    return;
    }
  }


    

type or paste code here

@larryk240 , please report the inking on the flexible connector of your display.

Is it different compared to your original panel?

There is a pull request that I just discovered: https://github.com/ZinggJM/GxEPD2/pull/59

Looks like the panels Waveshare currently sells don't have all parameters set in OTP for that panel.
Needs further investigation, later, if I have time for it.
In the meantime you can try with the version from the pull request.
-jz-

Update:
The panel GDEW075T7 is no longer available from Good Display.

Good Display have updated their demo code for GDEY075T7 dated 2023.06.16.
It uses the Fast Full Refresh feature of the panel; a special waveform entry for a "fake" temperature value.
They have also added values that override the OTP booster soft start values:

  //Enhanced display drive(Add 0x06 command)
  EPD_W21_WriteCMD(0x06);     //Booster Soft Start 
  EPD_W21_WriteDATA (0x27);
  EPD_W21_WriteDATA (0x27);   
  EPD_W21_WriteDATA (0x18);   
  EPD_W21_WriteDATA (0x17);   

These values are different than the values in the pull request.

I will update the driver class GxEPD2_750_YT7 for panel GDEY075T7 for the next release.
Note that I don't care about the panel provided by Waveshare, as I don't have that panel.
And I will rename GxEPD2_750_YT7 to GxEPD2_750_GDEY075T7.

Here is my old display


Here is my new display

It looks as if my "new" Waveshare display is the same as the GDEY075T7 if the pictures on the GD site are current. Am I right?

Thanks for taking the time to help me out.
Larry

I might also add that the power was out for about 4 hours today, so no refresh.
The first refresh after the power was restored looked good. Subsequent refreshes
are starting to fade again.

Oops! My display is a 21.08.30 while the GD display is a 20.08.30.
I'm sure that it makes a difference. I downloaded the .cpp file for the Waveshare display epd7in5_V2.cpp , but I'm not sure which values I need to use with your GxEPD2_750_YT7
I'm just starting to figure out how all of this works !

Neither do I. This code uses LUT from registers. Don't know why. I have no interest, as I don't have this display panel.
My panel with "expiration date" 20.08.20 (batch number?) doesn't work with the actual demo code from Good Display, it still needs LUT from registers for differential refresh.

I can only suggest you try with the booster settings for normal full refresh from the Good Display example:

  //Enhanced display drive(Add 0x06 command)
  EPD_W21_WriteCMD(0x06);     //Booster Soft Start 
  EPD_W21_WriteDATA (0x17);
  EPD_W21_WriteDATA (0x17);   
  EPD_W21_WriteDATA (0x28);   
  EPD_W21_WriteDATA (0x17); 

The other set is used for fast full refresh.
-jz-

BTW:

    SendCommand(0x65);  // Resolution setting
    SendData(0x00);
    SendData(0x00);//800*480
    SendData(0x00);
    SendData(0x00);

The comment is wrong. This command is GATE/SOURCE START SETTING (GSST) (R65H).
These are the correct default values. You can try, but I would be surprised if the values in OTP are wrong.