Please consider the following code snippet which might help you to solve the problem.
Private ReadOnly backImage As Bitmap = 'The path of your background image.
Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
Dim srcRect As New Rectangle(0, 0, backImage.Width, backImage.Height)
Dim desRect As Rectangle = PictureBox1.ClientRectangle
Using bmp As New Bitmap(PictureBox1.Width, PictureBox1.Height)
Using G As Graphics = Graphics.FromImage(bmp)
G.SmoothingMode = SmoothingMode.HighQuality
G.Clear(Color.Transparent)
G.DrawImage(backImage, desRect, srcRect, GraphicsUnit.Pixel)
G.DrawString("0.00", New Font("Arial", 12, FontStyle.Regular), Brushes.Red, desRect.Right - 80, 35)
'and the other overlay painting ....
End Using
e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic
e.Graphics.DrawImageUnscaled(bmp, 0, 0)
End Using
End Sub
I don't know how do you update your painting routine, nor whether the rest of your code has a possible effect on the painting. I think the mentioned code snippet is more than enough. Here is a quick demo that Invalidates (NOT Refresh) the painting every 100 milliseconds:

Do you see any flickering? and here is the reading from my task manager while the demo is running:

Almost nothing.
I suggest that:
If you invalidate the painting through the TextChanged and/or ValueChanged events of the input controls, make sure that your controls are not in an infinite redundancies loop. Each event calls another event again and again. If not then:
Try your application in another machine just to make sure that your main one has no hardware issues. Maybe it's time for a new setup :).