Index: libs/libmythtv/tv_play.cpp
===================================================================
--- libs/libmythtv/tv_play.cpp	(revision 9048)
+++ libs/libmythtv/tv_play.cpp	(working copy)
@@ -2282,10 +2282,13 @@
         {
             if (prbuffer->isDVD())
             {
-                if (prbuffer->DVD()->NumPartsInTitle() < 2)
+                if (prbuffer->InDVDMenuOrStillFrame())
+                    UpdateOSDSeekMessage(tr("Skipping Back Not Allowed"),
+                            osd_general_timeout);
+                else if (prbuffer->DVD()->NumPartsInTitle() < 2)
                 {
                     nvp->GoToDVDProgram(0);
-                    UpdateOSDSeekMessage(tr("Previous Title/Chapter"),
+                    UpdateOSDSeekMessage(tr("Previous Title"),
                             osd_general_timeout);
                 }
                 else
Index: libs/libmythtv/DVDRingBuffer.cpp
===================================================================
--- libs/libmythtv/DVDRingBuffer.cpp	(revision 9048)
+++ libs/libmythtv/DVDRingBuffer.cpp	(working copy)
@@ -287,14 +287,11 @@
                 if (IsInMenu() && NumMenuButtons() > 0 && 
                         !buttonSelected)
                 {
-                    int32_t button;
                     pci_t *pci = dvdnav_get_current_nav_pci(dvdnav);
-                    dvdnav_get_current_highlight(dvdnav, &button);
-
-                    if (button > NumMenuButtons() || button < 1)
-                        dvdnav_button_select(dvdnav, pci,1);
-                    else
-                        dvdnav_button_select(dvdnav, pci, button);
+                    uint8_t button = pci->hli.hl_gi.fosl_btnn;
+                    if (button > 0)
+                        dvdnav_button_select(dvdnav,pci,button);
+                    else                                                                                                                           dvdnav_button_select(dvdnav,pci,1);
                     buttonSelected = true;
                     spuchanged = false;
                 }
@@ -345,13 +342,14 @@
                         .arg(hl->sx).arg(hl->sy)
                         .arg(hl->ex).arg(hl->ey)
                         .arg(hl->pts).arg(hl->buttonN));
+                
+                if (DVDButtonUpdate(false))
+                    buttonExists = DrawMenuButton(menuSpuPkt,menuBuflength);
+                
                 if (blockBuf != dvdBlockWriteBuf)
                 {
                     dvdnav_free_cache_block(dvdnav, blockBuf);
                 }          
-
-                if (DVDButtonUpdate(false))
-                    buttonExists = DrawMenuButton(menuSpuPkt,menuBuflength);
             }
             break;
             case DVDNAV_STILL_FRAME:
