症状

PyOpenGL(3.1.1a1) +Python3.7で画像の上に四角形を表示したいが、挙動がおかしい。

実現しようとしていること

PNG画像をテクスチャ化し、その上に半透明の黒の四角形を表示する。
四角形は一回り小さくしてあります。

発生する症状

四角形の表示は正常にできるものの、マウスを左クリックすると、表示がおかしくなります。

左クリック前

左クリック前

左クリック後

左クリック後

以下、ソースコード

import sys
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
from win32api import GetSystemMetrics
from PIL import Image

def load_texture():
    img = Image.open("PIL_capture.png")
    w, h = img.size
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, img.tobytes())

def ScreenShort():
    glPushMatrix()
    glClearColor(1.0, 1.0, 0.0, 0.0)#背景の色##glの初期化
    glClear(GL_COLOR_BUFFER_BIT)


    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
    glEnable(GL_BLEND)##glの初期化#ブレンドの有効か

    glEnable(GL_TEXTURE_2D)##glの初期化##テクスチャを有効化

    glBegin(GL_QUADS)
    glTexCoord2d(0.0, 1.0)
    glVertex3d(-1.0, -1.0,  0.0)
    glTexCoord2d(1.0, 1.0)
    glVertex3d( 1.0, -1.0,  0.0)
    glTexCoord2d(1.0, 0.0)
    glVertex3d( 1.0,  1.0,  0.0)
    glTexCoord2d(0.0, 0.0)
    glVertex3d(-1.0,  1.0,  0.0)
    glEnd()
    glDisable(GL_TEXTURE_2D)
    glDisable(GL_BLEND)
    glFlush()
    glPopMatrix()

def sikakukei():    
     ##四角形
    glutSwapBuffers() 
    glPushMatrix()
    glColor4f(0.0,0.0,0.0,0.4)#テクスチャの色指定##黒##透過率##用調整
    glEnable(GL_BLEND)##ブレンド有効
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
    glBegin(GL_POLYGON)
    glVertex2d(-0.9,-0.9)##テクスチャの頂点指定
    glVertex2d(0.9,-0.9)
    glVertex2d(0.9,0.9)
    glVertex2d(-0.9,0.9)
    glEnd()
    glPopMatrix()
    glFlush()##強制実行
# def haikei():
#     glClearColor(1.0, 1.0, 1.0, 0.0)##背景の色##白
    ##バッファ削除
def display():#図形描画
    #glClear(GL_COLOR_BUFFER_BIT)
    glPushMatrix()
    ScreenShort()
    glPopMatrix()
    glPushMatrix()##変換行列に保存l再描画イベント発生時に動かないようにする。glPopMatrix()とくみあわせる。
    #glRotated(1.0,1.0,1.0,1.0)
    sikakukei()
    glPopMatrix()#
def main():##GLUTの設定   
    glutInit(sys.argv)##GLUT 初期化
    glutInitDisplayMode(GLUT_RGBA)##OpenGL の描画時に利用するモードを指定
    w = GetSystemMetrics(0)#横ピクセル数取得
    h = GetSystemMetrics(1)#縦ピクセル数取得
    glutGameModeString (str(w)+"x"+str(h)+":32@60")##ゲームモード時の画面設定
#     glutGameModeString ("1920x1080:32@60")##ゲームモード時の画面設定
    glutEnterGameMode()##glutEnterGameMode
    ##glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
    glutSwapBuffers()    
    load_texture()
    glutDisplayFunc(display)#描画処理 glutMainLoop()よりも前に書く

     ##テクスチャを拡大・縮小する方法の指定 */
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)

    ##glutIdleFunc(glutPostRedisplay()) 
    glutKeyboardFunc(keyboard)

    glutMainLoop()

##インポートされた際にプログラムが動かないようにするための文
##http://blog.pyq.jp/entry/Python_kaiketsu_180207
if __name__ == '__main__':
    main()