Para cambiar el color y que los estados permanezcan es necesario que evalúes el estado al presionar el checkbox y realices el cambio del color:
if (Color_5x7 == false)
{
groupBox1.BackColor = Color.LawnGreen;
groupBox1.ForeColor = Color.Black;
if(bool Color_p1_5x7 == false)
pictureBox1.BackColor = // Aquí el color para el estado desactivado.
else
pictureBox1.BackColor = // Aquí el color para el estado activado.
// Repetir el 'if' anterior para cada picturebox
Color_5x7 = true;
}
else
{
groupBox1.BackColor = Color.RoyalBlue;
groupBox1.ForeColor = Color.White;
if(bool Color_p1_5x7 == false)
pictureBox1.BackColor = // Aquí el color para el estado desactivado.
else
pictureBox1.BackColor = // Aquí el color para el estado activado.
// Repetir el 'if' anterior para cada picturebox
Color_5x7 = false;
}
Y para invertir los estados sería de una manera similar. Compruebas el estado de cada cuadro y cambias su valor, después inviertes el color.
if(bool Color_p1_5x7 == false)
{
Color_p1_5x7 = true;
pictureBox1.BackColor = // Color para el estado activo.
}else{
Color_p1_5x7 = false;
pictureBox1.BackColor = // Color para el estado inactivo.
}
Y repites los if para cada picturebox.
Como sugerencia, para evitarte tanto código deberías cambiar las condiciones y trabajar con variables del tipo 'Color' y realizar la asignación mediante éstas. Saludos.